/*
 * Decompiled with CFR 0.150.
 * 
 * Could not load the following classes:
 *  cn.hutool.core.date.DateTime
 *  cn.hutool.core.date.DateUtil
 *  cn.hutool.core.util.ObjectUtil
 *  cn.hutool.core.util.StrUtil
 *  com.alibaba.fastjson.JSON
 *  de.felixroske.jfxsupport.FXMLController
 *  de.felixroske.jfxsupport.GUIState
 *  javafx.application.Platform
 *  javafx.beans.value.ChangeListener
 *  javafx.beans.value.ObservableValue
 *  javafx.collections.FXCollections
 *  javafx.collections.ObservableList
 *  javafx.event.ActionEvent
 *  javafx.event.EventHandler
 *  javafx.fxml.FXML
 *  javafx.fxml.Initializable
 *  javafx.scene.Node
 *  javafx.scene.control.Alert
 *  javafx.scene.control.Alert$AlertType
 *  javafx.scene.control.Button
 *  javafx.scene.control.Label
 *  javafx.scene.control.ScrollPane
 *  javafx.scene.control.TableCell
 *  javafx.scene.control.TableColumn
 *  javafx.scene.control.TableView
 *  javafx.scene.control.TextField
 *  javafx.scene.control.TitledPane
 *  javafx.scene.control.cell.PropertyValueFactory
 *  javafx.scene.image.ImageView
 *  javafx.scene.input.KeyCode
 *  javafx.scene.input.KeyEvent
 *  javafx.scene.layout.GridPane
 *  javafx.scene.layout.Pane
 *  javafx.scene.layout.VBox
 *  javafx.scene.text.Text
 *  javafx.stage.Modality
 *  javafx.stage.Stage
 *  javafx.stage.WindowEvent
 *  javafx.util.Callback
 *  org.java_websocket.client.WebSocketClient
 *  org.java_websocket.drafts.Draft
 *  org.java_websocket.drafts.Draft_6455
 *  org.java_websocket.handshake.ServerHandshake
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 *  org.springframework.beans.factory.annotation.Autowired
 */
package com.gys.controller.salesReceipts;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.gys.GysApplication;
import com.gys.common.business.SalesReceiptsUtil;
import com.gys.common.business.ServerUtil;
import com.gys.common.data.HttpJson;
import com.gys.common.util.CacheUtil;
import com.gys.common.util.CommonUtil;
import com.gys.common.util.ConstUtil;
import com.gys.controller.BaseController;
import com.gys.controller.OfflineController;
import com.gys.controller.dataManger.ControllerManger;
import com.gys.controller.index.IndexController;
import com.gys.controller.pay.PayController;
import com.gys.controller.salesReceipts.AllChangeRateController;
import com.gys.controller.salesReceipts.CancelOneController;
import com.gys.controller.salesReceipts.CancelSaleController;
import com.gys.controller.salesReceipts.CashierDutyController;
import com.gys.controller.salesReceipts.ChangeDutyController;
import com.gys.controller.salesReceipts.ChangeDutyTipController;
import com.gys.controller.salesReceipts.DoctorController;
import com.gys.controller.salesReceipts.EmpController;
import com.gys.controller.salesReceipts.GetRestOrderController;
import com.gys.controller.salesReceipts.GiftCardController;
import com.gys.controller.salesReceipts.GiftController;
import com.gys.controller.salesReceipts.KeyTipController;
import com.gys.controller.salesReceipts.PdAndExpController;
import com.gys.controller.salesReceipts.ProductQueryController;
import com.gys.controller.salesReceipts.QueryMemberController;
import com.gys.controller.salesReceipts.RePrintBillController;
import com.gys.controller.salesReceipts.RecipelDrugsController;
import com.gys.controller.salesReceipts.RecipelInfoInputController;
import com.gys.controller.salesReceipts.ReplaceSaleController;
import com.gys.controller.salesReceipts.RestOrderController;
import com.gys.controller.salesReceipts.SaleActSelectController;
import com.gys.controller.salesReceipts.SelectRecipelDrugsController;
import com.gys.controller.salesReceipts.SingleChangePriceController;
import com.gys.controller.salesReceipts.SingleChangeRateController;
import com.gys.controller.salesReceipts.SpecialDrugsController;
import com.gys.controller.salesReceipts.SpliteProController;
import com.gys.controller.salesReceipts.SpliteProTipController;
import com.gys.controller.salesReceipts.TieNumController;
import com.gys.controller.salesReceipts.ZysyController;
import com.gys.controller.salesReceipts.ZysyLogOutController;
import com.gys.controller.server.ServerController;
import com.gys.data.example.GetLoginStoreOutData;
import com.gys.data.example.GetUserOutData;
import com.gys.data.salesReceipts.ActiveInfo;
import com.gys.data.salesReceipts.GaiaSdIntegralAddSet;
import com.gys.data.salesReceipts.GaiaSdMemberClass;
import com.gys.data.salesReceipts.GaiaSdSaleD;
import com.gys.data.salesReceipts.GaiaSdSaleH;
import com.gys.data.salesReceipts.GetGiftCardOutData;
import com.gys.data.salesReceipts.GetNumAmtData;
import com.gys.data.salesReceipts.GetPdAndExpOutData;
import com.gys.data.salesReceipts.GetPromByProCodeOutData;
import com.gys.data.salesReceipts.GetQueryMemberOutData;
import com.gys.data.salesReceipts.GetQueryProductOutData;
import com.gys.data.salesReceipts.GetRestOrderDetailOutData;
import com.gys.data.salesReceipts.GetRestOrderInfoOutData;
import com.gys.data.salesReceipts.GetSalesReceiptsTableOutData;
import com.gys.data.salesReceipts.GiftData;
import com.gys.data.salesReceipts.RecipelInfoInputData;
import com.gys.data.salesReceipts.SaleActSelectTableTwoData;
import com.gys.data.salesReceipts.SelectRecipelDrugsOutData;
import com.gys.data.salesReceipts.SpecialDrugsOutData;
import com.gys.data.salesReceipts.TableInitData;
import com.gys.data.server.GetServerInData;
import com.gys.view.O2O.OTOView;
import com.gys.view.pay.IndexView;
import com.gys.view.salesReceipts.AllChangeRateView;
import com.gys.view.salesReceipts.ApproveResultFailView;
import com.gys.view.salesReceipts.ApproveResultSuccessView;
import com.gys.view.salesReceipts.CancelOneView;
import com.gys.view.salesReceipts.CancelSaleView;
import com.gys.view.salesReceipts.CashierDutyView;
import com.gys.view.salesReceipts.ChangeDutyTipView;
import com.gys.view.salesReceipts.ChangeDutyView;
import com.gys.view.salesReceipts.DoctorView;
import com.gys.view.salesReceipts.EmpView;
import com.gys.view.salesReceipts.GetRestOrderView;
import com.gys.view.salesReceipts.GiftCardView;
import com.gys.view.salesReceipts.GiftView;
import com.gys.view.salesReceipts.PdAndExpView;
import com.gys.view.salesReceipts.ProductQueryView;
import com.gys.view.salesReceipts.PromCombinView;
import com.gys.view.salesReceipts.QueryMemberView;
import com.gys.view.salesReceipts.RePrintBillView;
import com.gys.view.salesReceipts.RecipelDrugsView;
import com.gys.view.salesReceipts.ReplaceSaleView;
import com.gys.view.salesReceipts.RestOrderView;
import com.gys.view.salesReceipts.RestPriceView;
import com.gys.view.salesReceipts.SaleActSelectView;
import com.gys.view.salesReceipts.SingleChangePriceView;
import com.gys.view.salesReceipts.SingleChangeRateView;
import com.gys.view.salesReceipts.SpecialDrugsView;
import com.gys.view.salesReceipts.SpliteProTipView;
import com.gys.view.salesReceipts.SpliteProView;
import com.gys.view.salesReceipts.TieNumView;
import com.gys.view.salesReceipts.ZysyLogOutView;
import com.gys.view.salesReceipts.ZysyView;
import de.felixroske.jfxsupport.FXMLController;
import de.felixroske.jfxsupport.GUIState;
import java.math.BigDecimal;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javafx.util.Callback;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

@FXMLController
public class SalesReceiptsMainController
extends BaseController
implements Initializable {
    private static final Logger log = LoggerFactory.getLogger(SalesReceiptsMainController.class);
    @FXML
    private ScrollPane scrollPane;
    @FXML
    private TableView<GetSalesReceiptsTableOutData> tableView;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> proCode;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> num;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> index;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> total;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> price;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> proUnit;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> prcAmount;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> disc;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> proName;
    @FXML
    private TableColumn<GetSalesReceiptsTableOutData, String> status;
    @FXML
    private Label caseId;
    @FXML
    private Label workUserId;
    @FXML
    private Label totalMoney;
    @FXML
    private Label date;
    @FXML
    private Label shopName;
    @FXML
    private Label time;
    @FXML
    private Pane modelPane;
    @FXML
    private Pane keytoolPane;
    @FXML
    private Pane fastPane;
    @FXML
    private Label cardNum;
    @FXML
    private Label phone;
    @FXML
    private Label name;
    @FXML
    private Label type;
    @FXML
    private Label point;
    @FXML
    private Label dis;
    @FXML
    private TextField numTextField;
    @FXML
    private TextField inputTextField;
    @FXML
    private Label proPlaceF;
    @FXML
    private Label gssbBatchNoF;
    @FXML
    private Label gssbVaildDateF;
    @FXML
    private Label gssbQtyF;
    @FXML
    private Label proSpecsF;
    @FXML
    private Label gsplSeatF;
    @FXML
    private Label proIfPartF;
    @FXML
    private Label proMedProdctF;
    @FXML
    private Label empF;
    @FXML
    private Label doctorF;
    @FXML
    private Label proUsage;
    @FXML
    private Label proContraindication;
    @FXML
    private TableColumn<GetPromByProCodeOutData, String> promotionName;
    @FXML
    private TableColumn<GetPromByProCodeOutData, String> promotionType;
    @FXML
    private TableColumn<GetPromByProCodeOutData, String> promotionContent;
    @FXML
    private TableColumn<GetPromByProCodeOutData, String> button;
    @FXML
    private TableView<GetPromByProCodeOutData> smallTableView;
    @FXML
    private Text zysy;
    @Autowired
    private IndexController indexController;
    @Autowired
    private QueryMemberController queryMemberController;
    @Autowired
    private ZysyController zysyController;
    @Autowired
    ZysyLogOutController zysyLogOutController;
    @Autowired
    private SpliteProController spliteProController;
    @Autowired
    private ChangeDutyController changeDutyController;
    @Autowired
    private ChangeDutyTipController changeDutyTipController;
    @Autowired
    private RePrintBillController rePrintBillController;
    @Autowired
    private KeyTipController keyTipController;
    @Autowired
    private ProductQueryController productQueryController;
    @Autowired
    private CashierDutyController cashierDutyController;
    @Autowired
    private PdAndExpController pdAndExpController;
    @Autowired
    private EmpController empController;
    @Autowired
    private DoctorController doctorController;
    @Autowired
    private RecipelInfoInputController recipelInfoInputController;
    @Autowired
    private GetRestOrderController getRestOrderController;
    @Autowired
    private RecipelDrugsController recipelDrugsController;
    @Autowired
    private SpecialDrugsController specialDrugsController;
    @Autowired
    private ServerController serverController;
    @Autowired
    private GiftController giftController;
    @Autowired
    private CancelOneController cancelOneController;
    @Autowired
    private TieNumController tieNumController;
    @Autowired
    private SaleActSelectController saleActSelectController;
    @Autowired
    private SingleChangePriceController singleChangePriceController;
    @Autowired
    private SingleChangeRateController singleChangeRateController;
    @Autowired
    private AllChangeRateController allChangeRateController;
    @Autowired
    private RestOrderController restOrderController;
    @Autowired
    private ReplaceSaleController replaceSaleController;
    @Autowired
    private SelectRecipelDrugsController selectRecipelDrugsController;
    @Autowired
    private GiftCardController giftCardController;
    @Autowired
    private PayController payController;
    @Autowired
    private SpliteProTipController spliteProTipController;
    private List<GetQueryProductOutData> queryProductOutData = null;
    public ObservableList<GetSalesReceiptsTableOutData> observableTableList = FXCollections.observableArrayList(new ArrayList());
    public ObservableList<GetPromByProCodeOutData> observableSamllTableList = FXCollections.observableArrayList(new ArrayList());
    private static Timer timeTimer = new Timer();
    private static Double layoutYSour = null;
    private boolean selectFlag = false;
    private GetQueryProductOutData product;
    public boolean numInFlag = false;
    private ChangeListener changeListener;
    List<GetSalesReceiptsTableOutData> specialDrugList = new ArrayList<GetSalesReceiptsTableOutData>();
    public List<GetSalesReceiptsTableOutData> recipelDrugList = new ArrayList<GetSalesReceiptsTableOutData>();
    private Boolean createSaleFlag = false;
    private String priceString;
    private String lsPriceString;
    private String indexString;
    private String proCodeString;
    private String typeId;
    public String deptId;
    public String replaceUserId;
    private Boolean inputFlag = false;
    public GaiaSdIntegralAddSet gaiaSdIntegralAddSet = null;
    public GaiaSdMemberClass gaiaSdMemberClass = null;
    @FXML
    private Pane memberPane;
    @FXML
    private GridPane memberG1;
    @FXML
    private GridPane memberG2;
    @FXML
    private GridPane proF1Grid;
    @FXML
    private GridPane proF2Grid;
    @FXML
    private GridPane useGrid1;
    @FXML
    private GridPane useGrid2;
    @FXML
    private Label caseIdLabel;
    @FXML
    private Label workUserIdLabel;
    @FXML
    private Label saleLabel;
    @FXML
    private Label numLabel;
    @FXML
    private Label inputLabel;
    @FXML
    private Pane moneyTotalPane;
    @FXML
    private Pane proPane;
    @FXML
    private Pane quickKeyPane;
    @FXML
    private ImageView imageView;
    @FXML
    private Button quickBut1;
    @FXML
    private Button quickBut2;
    @FXML
    private Pane model1;
    @FXML
    private Pane model2;
    @FXML
    private VBox vbox;
    @FXML
    private Pane inputModel;
    @FXML
    private Pane pane;
    @Autowired
    private OfflineController offlineController;
    @Autowired
    private CancelSaleController cancelSaleController;

    public void initialize(URL location, ResourceBundle resources) {
        ControllerManger.controllerMap.put(this.getClass().getSimpleName(), this);
        this.change();
        this.time();
        this.shopName.setText(((GetLoginStoreOutData)CacheUtil.get("store")).getStoName());
        this.bangding();
        this.addButton(this.button);
        this.tableClick();
        new Timer().schedule(new TimerTask(){

            @Override
            public void run() {
                Stage stage = IndexController.stage;
                stage.setOnCloseRequest((EventHandler)new EventHandler<WindowEvent>(){

                    public void handle(WindowEvent event) {
                        SalesReceiptsMainController.this.cancelTimer();
                        SalesReceiptsMainController.this.restNoInit();
                    }
                });
            }
        }, 500L);
    }

    @Override
    public void init() {
        this.deptId = null;
        this.replaceUserId = null;
        this.inputFlag = false;
        this.selectFlag = false;
        this.numInFlag = false;
        this.specialDrugList = new ArrayList<GetSalesReceiptsTableOutData>();
        this.recipelDrugList = new ArrayList<GetSalesReceiptsTableOutData>();
        Double layoutY = this.modelPane.getLayoutY();
        if (ObjectUtil.isEmpty(layoutYSour)) {
            layoutYSour = layoutY;
        }
        if (this.fastPane.isVisible()) {
            this.modelPane.setLayoutY(layoutYSour.doubleValue());
        } else {
            this.modelPane.setLayoutY(layoutYSour - 35.0);
        }
        this.inputTextField.requestFocus();
        if (ObjectUtil.isEmpty(this.changeListener)) {
            this.changeListener = new ChangeListener<String>(){

                public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                    if (!CommonUtil.positiveInteger(newValue)) {
                        if (!CommonUtil.positiveInteger(oldValue) && newValue.length() > 0) {
                            SalesReceiptsMainController.this.numTextField.clear();
                        } else if (ObjectUtil.isNotEmpty(newValue)) {
                            SalesReceiptsMainController.this.numTextField.setText(oldValue);
                        } else {
                            SalesReceiptsMainController.this.numTextField.clear();
                        }
                        if (ObjectUtil.isEmpty(newValue)) {
                            SalesReceiptsMainController.this.numTextField.clear();
                        }
                    }
                }
            };
        }
        this.numTextField.textProperty().addListener(this.changeListener);
        this.date.setText(DateUtil.format((Date)new Date(), (String)"yyyy/MM/dd"));
        this.keyBoard();
        if (ObjectUtil.isEmpty(CacheUtil.get("isFirst")) || ((Boolean)CacheUtil.get("isFirst")).booleanValue()) {
            IndexController.stage.requestFocus();
            this.restNoInit();
            this.workUserId.setText("");
            new Timer().schedule(new TimerTask(){

                @Override
                public void run() {
                    Platform.runLater((Runnable)new Runnable(){

                        @Override
                        public void run() {
                            SalesReceiptsMainController.this.cashierDutyController.init();
                            CommonUtil.showView(CashierDutyView.class, Modality.APPLICATION_MODAL);
                        }
                    });
                }
            }, 500L);
        }
        if (!((Boolean)CacheUtil.get("networkFlag")).booleanValue()) {
            return;
        }
        HttpJson pointSetHttpJson = SalesReceiptsUtil.getPointSet();
        if (pointSetHttpJson.isSuccess()) {
            this.gaiaSdIntegralAddSet = (GaiaSdIntegralAddSet)JSON.parseObject((String)pointSetHttpJson.getMsg(), GaiaSdIntegralAddSet.class);
            if (ObjectUtil.isEmpty(this.gaiaSdIntegralAddSet)) {
                this.gaiaSdIntegralAddSet = new GaiaSdIntegralAddSet(null, null, null, new BigDecimal(1), "0", "0", new BigDecimal(0), "0", new BigDecimal(0), "0", new BigDecimal(0), "0", new BigDecimal(0), "0", new BigDecimal(0), "0", new BigDecimal(0), "0");
            }
        } else {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", pointSetHttpJson.getMsg());
            alert.showAndWait();
        }
        try {
            WebSocketClient webSocketClient = new WebSocketClient(new URI(ConstUtil.SOCKET_URL + ((GetUserOutData)CacheUtil.get("logInUser")).getUserId()), (Draft)new Draft_6455()){

                public void onOpen(ServerHandshake handshakedata) {
                    log.info("[websocket] \u8fde\u63a5\u6210\u529f");
                }

                public void onMessage(String message) {
                    log.info("[websocket] \u6536\u5230\u6d88\u606f={}", message);
                    if ("3".equals(message)) {
                        Platform.runLater((Runnable)new Runnable(){

                            @Override
                            public void run() {
                                CommonUtil.showView(ApproveResultSuccessView.class, Modality.APPLICATION_MODAL);
                            }
                        });
                    } else {
                        Platform.runLater((Runnable)new Runnable(){

                            @Override
                            public void run() {
                                CommonUtil.showView(ApproveResultFailView.class, Modality.APPLICATION_MODAL);
                            }
                        });
                    }
                }

                public void onClose(int code, String reason, boolean remote) {
                    log.info("[websocket] \u9000\u51fa\u8fde\u63a5");
                }

                public void onError(Exception ex) {
                    log.info("[websocket] \u8fde\u63a5\u9519\u8bef={}", ex.getMessage());
                }
            };
            webSocketClient.connect();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void change() {
        Stage stage = IndexController.stage;
        double maxWidth = stage.getMaxWidth();
        double maxHeight = stage.getMaxHeight();
        this.scrollPane.setPrefWidth(maxWidth);
        this.scrollPane.setPrefHeight(maxHeight);
        this.caseIdLabel.setLayoutX(this.caseIdLabel.getLayoutX() * (maxWidth / 1440.0));
        this.caseId.setLayoutX(this.caseId.getLayoutX() * (maxWidth / 1440.0));
        this.workUserIdLabel.setLayoutX(this.workUserIdLabel.getLayoutX() * (maxWidth / 1440.0));
        this.workUserId.setLayoutX(this.workUserId.getLayoutX() * (maxWidth / 1440.0));
        this.memberPane.setLayoutX(this.memberPane.getLayoutX() * (maxWidth / 1440.0));
        this.memberG1.setPrefWidth(this.memberG1.getPrefWidth() * (maxWidth / 1440.0));
        this.memberG2.setPrefWidth(this.memberG2.getPrefWidth() * (maxWidth / 1440.0));
        this.moneyTotalPane.setLayoutX(this.moneyTotalPane.getLayoutX() * (maxWidth / 1440.0) - 25.0 * (1.0 - maxWidth / 1440.0));
        this.moneyTotalPane.setPrefWidth(this.moneyTotalPane.getPrefWidth() * (maxWidth / 1440.0));
        this.proPane.setPrefWidth(this.proPane.getPrefWidth() * (maxWidth / 1440.0));
        this.keytoolPane.setLayoutX(this.keytoolPane.getLayoutX() * (maxWidth / 1440.0));
        this.quickKeyPane.setPrefWidth(this.quickKeyPane.getPrefWidth() * (maxWidth / 1440.0));
        this.proF1Grid.setPrefWidth(this.proF1Grid.getPrefWidth() * (maxWidth / 1440.0) - 25.0 * (1.0 - maxWidth / 1440.0));
        this.proF2Grid.setPrefWidth(this.proF2Grid.getPrefWidth() * (maxWidth / 1440.0) - 25.0 * (1.0 - maxWidth / 1440.0));
        this.useGrid1.setPrefWidth(this.useGrid1.getPrefWidth() * (maxWidth / 1440.0));
        this.useGrid2.setPrefWidth(this.useGrid2.getPrefWidth() * (maxWidth / 1440.0));
        this.useGrid2.setPrefHeight(this.useGrid2.getPrefHeight() * (maxHeight / 900.0));
        this.inputTextField.setPrefWidth(this.inputTextField.getPrefWidth() * (maxWidth / 1440.0));
        this.numTextField.setPrefWidth(this.numTextField.getPrefWidth() * (maxWidth / 1440.0));
        this.numTextField.setLayoutX(this.numTextField.getLayoutX() * (maxWidth / 1440.0));
        this.numLabel.setLayoutX(this.numLabel.getLayoutX() * (maxWidth / 1440.0));
        this.inputLabel.setLayoutX(this.inputLabel.getLayoutX() * (maxWidth / 1440.0));
        this.imageView.setLayoutX(this.imageView.getLayoutX() * (maxWidth / 1440.0));
        this.quickBut1.setLayoutX(this.quickBut1.getLayoutX() * (maxWidth / 1440.0));
        this.quickBut2.setLayoutX(this.quickBut2.getLayoutX() * (maxWidth / 1440.0));
        this.smallTableView.setPrefWidth(this.smallTableView.getPrefWidth() * (maxWidth / 1440.0) - 25.0 * (1.0 - maxWidth / 1440.0));
        this.smallTableView.setPrefHeight(this.smallTableView.getPrefHeight() * (maxHeight / 900.0));
        this.smallTableView.setLayoutX(this.smallTableView.getLayoutX() * (maxWidth / 1440.0));
        this.saleLabel.setLayoutX(this.saleLabel.getLayoutX() * (maxWidth / 1440.0));
        this.saleLabel.setLayoutY(this.saleLabel.getLayoutY() * (maxHeight / 900.0));
        this.tableView.setPrefWidth(this.tableView.getPrefWidth() * (maxWidth / 1440.0) - 25.0 * (1.0 - maxWidth / 1440.0));
        double prefHeight = this.tableView.getPrefHeight();
        this.tableView.setPrefHeight(this.tableView.getPrefHeight() * (maxHeight / 900.0) - this.model1.getPrefHeight() * (1.0 - maxHeight / 900.0));
        double diff = prefHeight - this.tableView.getPrefHeight();
        this.index.setPrefWidth(this.tableView.getPrefWidth() * 0.05);
        this.proCode.setPrefWidth(this.tableView.getPrefWidth() * 0.08);
        this.proName.setPrefWidth(this.tableView.getPrefWidth() * 0.15);
        this.proUnit.setPrefWidth(this.tableView.getPrefWidth() * 0.08);
        this.num.setPrefWidth(this.tableView.getPrefWidth() * 0.08);
        this.prcAmount.setPrefWidth(this.tableView.getPrefWidth() * 0.09);
        this.disc.setPrefWidth(this.tableView.getPrefWidth() * 0.11);
        this.price.setPrefWidth(this.tableView.getPrefWidth() * 0.13);
        this.total.setPrefWidth(this.tableView.getPrefWidth() * 0.12);
        this.status.setPrefWidth(this.tableView.getPrefWidth() * 0.105);
        this.pane.setPrefHeight(this.pane.getPrefHeight() * (maxHeight / 900.0));
        this.proPane.setPrefHeight(this.proPane.getPrefHeight() - diff);
        this.model2.setTranslateY(this.model2.getTranslateY() - diff);
        this.vbox.setPrefHeight(this.vbox.getPrefHeight() * (maxHeight / 900.0));
    }

    public void addButton(TableColumn<GetPromByProCodeOutData, String> column) {
        column.setCellFactory(tc -> {
            final Button button = new Button("\u786e\u5b9a");
            button.setPrefHeight(25.0);
            TableCell<GetPromByProCodeOutData, String> cell = new TableCell<GetPromByProCodeOutData, String>(){

                protected void updateItem(String chuzhi, boolean empty) {
                    super.updateItem(chuzhi, empty);
                    if (empty) {
                        this.setGraphic(null);
                    } else {
                        this.setGraphic((Node)button);
                    }
                }
            };
            button.setOnAction(e->{
                    int rank = cell.getIndex();
                    GetPromByProCodeOutData promByProCodeOutData = (GetPromByProCodeOutData) this.observableSamllTableList.get(rank);
                    ActiveInfo activeInfo = promByProCodeOutData.getActiveInfo().get(0);
                    SaleActSelectTableTwoData selectedItem = new SaleActSelectTableTwoData();
                    selectedItem.setProCodeS(activeInfo.getProCode());
                    selectedItem.setVoucherIdS(promByProCodeOutData.getGsphVoucherId());
                    selectedItem.setTypeIdS(activeInfo.getGsphTypeId());
                    selectedItem.setSerial(activeInfo.getSerial());
                    selectedItem.setNormalPriceS(activeInfo.getNormalPrice());
                    selectedItem.setMemberFlag(activeInfo.getMemberFlag());
                    selectedItem.setDis(activeInfo.getDis());
                    selectedItem.setDisPrice(activeInfo.getDisPrice());
                    this.saleActSelectController.countPrice(selectedItem);
                    });


//                    arg_0 -> (TableCell cell, ActionEvent e) {
//                int rank = cell.getIndex();
//                GetPromByProCodeOutData promByProCodeOutData = (GetPromByProCodeOutData)this.observableSamllTableList.get(rank);
//                ActiveInfo activeInfo = promByProCodeOutData.getActiveInfo().get(0);
//                SaleActSelectTableTwoData selectedItem = new SaleActSelectTableTwoData();
//                selectedItem.setProCodeS(activeInfo.getProCode());
//                selectedItem.setVoucherIdS(promByProCodeOutData.getGsphVoucherId());
//                selectedItem.setTypeIdS(activeInfo.getGsphTypeId());
//                selectedItem.setSerial(activeInfo.getSerial());
//                selectedItem.setNormalPriceS(activeInfo.getNormalPrice());
//                selectedItem.setMemberFlag(activeInfo.getMemberFlag());
//                selectedItem.setDis(activeInfo.getDis());
//                selectedItem.setDisPrice(activeInfo.getDisPrice());
//                this.saleActSelectController.countPrice(selectedItem);
//            });
            return cell;
        });
    }

    private void keyBoard() {
        IndexController.stage.getScene().setOnKeyReleased((EventHandler)new EventHandler<KeyEvent>(){

            public void handle(KeyEvent e) {
                SalesReceiptsMainController.this.keyFast(e);
                e.consume();
            }
        });
        this.tableView.setOnKeyReleased((EventHandler)new EventHandler<KeyEvent>(){

            public void handle(KeyEvent e) {
                SalesReceiptsMainController.this.keyFast(e);
                e.consume();
            }
        });
        this.tableView.setOnKeyPressed((EventHandler)new EventHandler<KeyEvent>(){

            public void handle(KeyEvent e) {
                if (e.getCode() == KeyCode.F2) {
                    SalesReceiptsMainController.this.keytoolBtnShow();
                }
                e.consume();
            }
        });
        IndexController.stage.getScene().setOnKeyPressed((EventHandler)new EventHandler<KeyEvent>(){

            public void handle(KeyEvent e) {
                if (e.getCode() == KeyCode.F2) {
                    SalesReceiptsMainController.this.keytoolBtnShow();
                }
                e.consume();
            }
        });
    }

    private void keyFast(KeyEvent e) {
        if (e.getCode() == KeyCode.F2) {
            this.keytoolBtnHide();
        } else if (e.getCode() == KeyCode.ESCAPE) {
            IndexController.stage.requestFocus();
        } else if (e.getCode() == KeyCode.LEFT) {
            if (this.numTextField.isFocused()) {
                this.inputTextField.requestFocus();
            }
        } else if (e.getCode() == KeyCode.RIGHT) {
            if (this.inputTextField.isFocused()) {
                this.numTextField.requestFocus();
            }
        } else if (e.getCode() == KeyCode.ENTER) {
            if (this.inputTextField.isFocused()) {
                this.inputNameAction();
            } else if (this.numTextField.isFocused()) {
                this.numTextFieldChange();
            }
        } else if (e.getCode() == KeyCode.F1) {
            this.fastAction();
        } else if (!this.inputTextField.isFocused() && e.getCode() == KeyCode.ALT) {
            this.inputTextField.requestFocus();
        } else {
            if (this.inputTextField.isFocused() && !e.isControlDown()) {
                return;
            }
            if (e.getCode() == KeyCode.H || e.isControlDown() && e.getCode() == KeyCode.H) {
                this.inputMember();
            } else if (e.getCode() == KeyCode.E || e.isControlDown() && e.getCode() == KeyCode.E) {
                this.num();
            } else if (e.getCode() == KeyCode.Y || e.isControlDown() && e.getCode() == KeyCode.Y) {
                GetSalesReceiptsTableOutData selectedItem = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
                if (ObjectUtil.isEmpty(selectedItem)) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u9009\u62e9\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.empController.init();
                CommonUtil.showView(EmpView.class, Modality.APPLICATION_MODAL);
            } else if (e.getCode() == KeyCode.D || e.isControlDown() && e.getCode() == KeyCode.D) {
                GetSalesReceiptsTableOutData selectedItem = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
                if (ObjectUtil.isEmpty(selectedItem)) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u9009\u62e9\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.doctorController.init();
                CommonUtil.showView(DoctorView.class, Modality.APPLICATION_MODAL);
            } else if (e.getCode() == KeyCode.Z || e.isControlDown() && e.getCode() == KeyCode.Z) {
                if (this.tableView.getItems().size() == 0) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u8f93\u5165\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.selectRecipelDrugsController.selectDataList.clear();
                this.selectRecipelDrugsController.selectDataIndexList.clear();
                this.createSale();
                this.serverAction();
            } else if (e.getCode() == KeyCode.W || e.isControlDown() && e.getCode() == KeyCode.W) {
                if (this.tableView.getItems().size() == 0) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u6682\u672a\u5f55\u5165\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.cancelSale();
            } else if (e.getCode() == KeyCode.Q || e.isControlDown() && e.getCode() == KeyCode.Q) {
                this.cancelOneSale();
            } else if (e.getCode() == KeyCode.G || e.isControlDown() && e.getCode() == KeyCode.G) {
                this.restOrder();
            } else if (e.getCode() == KeyCode.F || e.isControlDown() && e.getCode() == KeyCode.F) {
                this.getRestOrder();
            } else if (e.getCode() == KeyCode.C || e.isControlDown() && e.getCode() == KeyCode.C) {
                this.spliteMoneyCheck();
            } else if (e.getCode() == KeyCode.L || e.isControlDown() && e.getCode() == KeyCode.L) {
                this.changeDutyTipController.init();
                CommonUtil.showView(ChangeDutyTipView.class, Modality.APPLICATION_MODAL);
            } else if (e.getCode() == KeyCode.K || e.isControlDown() && e.getCode() == KeyCode.K) {
                if (this.zysy.isVisible()) {
                    this.zysyLogOutController.init();
                    CommonUtil.showView(ZysyLogOutView.class, Modality.APPLICATION_MODAL);
                } else {
                    this.zysyController.init();
                    CommonUtil.showView(ZysyView.class, Modality.APPLICATION_MODAL);
                }
            } else if (e.getCode() == KeyCode.T || e.isControlDown() && e.getCode() == KeyCode.T) {
                this.zysy();
            } else if (e.getCode() == KeyCode.P || e.isControlDown() && e.getCode() == KeyCode.P) {
                this.rePrintBill();
            } else if (e.getCode() == KeyCode.J || e.isControlDown() && e.getCode() == KeyCode.J) {
                if (this.tableView.getItems().size() == 0) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u8f93\u5165\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.singleChangePrice();
            } else if (e.getCode() == KeyCode.U || e.isControlDown() && e.getCode() == KeyCode.U) {
                if (this.tableView.getItems().size() == 0) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u8f93\u5165\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.singleChangeRate();
            } else if (e.getCode() == KeyCode.I || e.isControlDown() && e.getCode() == KeyCode.I) {
                if (this.tableView.getItems().size() == 0) {
                    Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u8f93\u5165\u5546\u54c1");
                    alert.showAndWait();
                    return;
                }
                this.allChangeRate();
            } else if (e.getCode() == KeyCode.N || e.isControlDown() && e.getCode() == KeyCode.N) {
                this.restPriceView();
            } else if (e.getCode() == KeyCode.O || e.isControlDown() && e.getCode() == KeyCode.O) {
                this.ReplaceSaleView();
            }
        }
    }

    private void ReplaceSaleView() {
        this.replaceSaleController.init();
        CommonUtil.showView(ReplaceSaleView.class, Modality.APPLICATION_MODAL);
    }

    private void restPriceView() {
        if (this.tableView.getItems().size() == 0) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u8f93\u5165\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        CommonUtil.showView(RestPriceView.class, Modality.APPLICATION_MODAL);
    }

    private void rePrintBill() {
        this.rePrintBillController.init();
        CommonUtil.showView(RePrintBillView.class, Modality.APPLICATION_MODAL);
    }

    private void zysy() {
        if (!this.zysy.isVisible()) {
            return;
        }
        GetSalesReceiptsTableOutData selectedItem = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
        if (ObjectUtil.isEmpty(selectedItem)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u9009\u62e9\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        if ("3".equals(selectedItem.getStorageArea())) {
            this.tieNumController.init();
            CommonUtil.showView(TieNumView.class, Modality.APPLICATION_MODAL);
        } else {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u4e2d\u836f\u6536\u94f6\u53ea\u9488\u5bf9\u4e2d\u836f");
            alert.showAndWait();
        }
    }

    private void singleChangePrice() {
        this.createSale();
        GetSalesReceiptsTableOutData salesReceiptsTableOutData = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
        this.priceString = salesReceiptsTableOutData.getPrice();
        this.lsPriceString = salesReceiptsTableOutData.getPrcAmount();
        this.proCodeString = salesReceiptsTableOutData.getProCode();
        this.indexString = salesReceiptsTableOutData.getIndex();
        if (ObjectUtil.isEmpty(salesReceiptsTableOutData)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u672a\u9009\u62e9\u5bf9\u5e94\u8bb0\u5f55\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01");
            alert.showAndWait();
            return;
        }
        this.singleChangePriceController.init();
        CommonUtil.showView(SingleChangePriceView.class, Modality.APPLICATION_MODAL);
    }

    private void singleChangeRate() {
        this.createSale();
        GetSalesReceiptsTableOutData salesReceiptsTableOutData = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
        this.priceString = salesReceiptsTableOutData.getPrice();
        this.lsPriceString = salesReceiptsTableOutData.getPrcAmount();
        this.proCodeString = salesReceiptsTableOutData.getProCode();
        this.indexString = salesReceiptsTableOutData.getIndex();
        if (ObjectUtil.isEmpty(salesReceiptsTableOutData)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u672a\u9009\u62e9\u5bf9\u5e94\u8bb0\u5f55\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01");
            alert.showAndWait();
            return;
        }
        this.singleChangeRateController.init();
        CommonUtil.showView(SingleChangeRateView.class, Modality.APPLICATION_MODAL);
    }

    private void allChangeRate() {
        this.createSale();
        this.allChangeRateController.init();
        CommonUtil.showView(AllChangeRateView.class, Modality.APPLICATION_MODAL);
    }

    public void singleChangePriceDo(String changePrice) {
        ((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).setPrice(changePrice);
        ((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).setDisc(new BigDecimal(changePrice).divide(new BigDecimal(((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).getPrcAmount()), 2, 4).multiply(new BigDecimal(100)).toString());
        ((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).setTotal(new BigDecimal(changePrice).multiply(new BigDecimal(((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).getNum())).toString());
        ((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).setStatus("\u6539\u4ef7");
        this.countMoney();
        this.tableView.refresh();
    }

    public void singleChangeRateDo(String changeRate) {
        GetSalesReceiptsTableOutData selectedItem = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
        selectedItem.setDisc(changeRate);
        String price = new BigDecimal(changeRate).divide(new BigDecimal(100)).multiply(new BigDecimal(((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).getPrcAmount())).toString();
        selectedItem.setPrice(CommonUtil.format2(Float.valueOf(price).floatValue()));
        String total = new BigDecimal(((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).getPrice()).multiply(new BigDecimal(((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).getNum())).toString();
        selectedItem.setTotal(CommonUtil.format2(Float.valueOf(total).floatValue()));
        ((GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem()).setStatus("\u6539\u4ef7");
        this.countMoney();
        this.tableView.refresh();
    }

    public void allChangeRateDo(String changeRate) {
        for (int i = 0; i < this.observableTableList.size(); ++i) {
            GetSalesReceiptsTableOutData outData = (GetSalesReceiptsTableOutData)this.observableTableList.get(i);
            outData.setDisc(changeRate);
            String price = new BigDecimal(changeRate).divide(new BigDecimal(100)).multiply(new BigDecimal(outData.getPrcAmount())).toString();
            outData.setPrice(CommonUtil.format2(Float.valueOf(price).floatValue()));
            String total = new BigDecimal(outData.getPrice()).multiply(new BigDecimal(outData.getNum())).toString();
            outData.setTotal(CommonUtil.format2(Float.valueOf(total).floatValue()));
            outData.setStatus("\u6539\u4ef7");
        }
        this.tableView.setItems(this.observableTableList);
        this.countMoney();
        this.tableView.refresh();
    }

    private void spliteMoneyCheck() {
        GetSalesReceiptsTableOutData salesReceiptsTableOutData = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
        if (ObjectUtil.isEmpty(salesReceiptsTableOutData)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u672a\u9009\u62e9\u5bf9\u5e94\u8bb0\u5f55\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01");
            alert.showAndWait();
            return;
        }
        if ("1".equals(salesReceiptsTableOutData.getIsGift())) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8be5\u5546\u54c1\u4e3a\u8d60\u54c1");
            alert.showAndWait();
            return;
        }
        if ("\u662f".equals(salesReceiptsTableOutData.getProIfPart())) {
            this.spliteProController.init();
            CommonUtil.showView(SpliteProView.class, Modality.APPLICATION_MODAL);
            this.countMoney();
        } else {
            this.spliteProTipController.init();
            CommonUtil.showView(SpliteProTipView.class, Modality.APPLICATION_MODAL);
        }
    }

    private void getRestOrder() {
        this.getRestOrderController.init();
        CommonUtil.showView(GetRestOrderView.class, Modality.APPLICATION_MODAL);
    }

    private void restOrder() {
        if (this.tableView.getItems().size() == 0) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u6682\u672a\u5f55\u5165\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        this.restOrderController.init();
        CommonUtil.showView(RestOrderView.class, Modality.APPLICATION_MODAL);
    }

    private void cancelSale() {
        this.cancelSaleController.init();
        CommonUtil.showView(CancelSaleView.class, Modality.APPLICATION_MODAL);
    }

    private void cancelOneSale() {
        if (this.tableView.getItems().size() == 0) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u6682\u672a\u5f55\u5165\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        this.cancelOneController.init();
        CommonUtil.showView(CancelOneView.class, Modality.APPLICATION_MODAL);
    }

    private void tableClick() {
        this.tableView.getSelectionModel().selectedItemProperty().addListener((ChangeListener)new ChangeListener<GetSalesReceiptsTableOutData>(){

            public void changed(ObservableValue<? extends GetSalesReceiptsTableOutData> observableValue, GetSalesReceiptsTableOutData oldItem, GetSalesReceiptsTableOutData newItem) {
                if (ObjectUtil.isEmpty(newItem)) {
                    return;
                }
                SalesReceiptsMainController.this.selectFlag = true;
                SalesReceiptsMainController.this.numTextField.setText(newItem.getNum().split("/*")[0]);
                SalesReceiptsMainController.this.selectFlag = false;
                SalesReceiptsMainController.this.empF.setText(newItem.getEmpName());
                SalesReceiptsMainController.this.doctorF.setText(newItem.getDoctorName());
                SalesReceiptsMainController.this.proUsage.setText(newItem.getProUsage());
                SalesReceiptsMainController.this.proContraindication.setText(newItem.getProContraindication());
                GetPdAndExpOutData pdAndExpData = newItem.getPdAndExpData();
                if (ObjectUtil.isNotEmpty(pdAndExpData)) {
                    SalesReceiptsMainController.this.proPlaceF.setText(pdAndExpData.getProPlace());
                    SalesReceiptsMainController.this.gssbBatchNoF.setText(pdAndExpData.getGssbBatchNo());
                    SalesReceiptsMainController.this.gssbVaildDateF.setText(pdAndExpData.getGssbVaildDate());
                    SalesReceiptsMainController.this.gssbQtyF.setText(pdAndExpData.getGssbQty());
                    SalesReceiptsMainController.this.proSpecsF.setText(pdAndExpData.getProSpecs());
                    SalesReceiptsMainController.this.gsplSeatF.setText(pdAndExpData.getGsplSeat());
                    SalesReceiptsMainController.this.proIfPartF.setText(pdAndExpData.getProIfPart());
                    SalesReceiptsMainController.this.proMedProdctF.setText(pdAndExpData.getProMedProdct());
                } else {
                    SalesReceiptsMainController.this.proPlaceF.setText("");
                    SalesReceiptsMainController.this.gssbBatchNoF.setText("");
                    SalesReceiptsMainController.this.gssbVaildDateF.setText("");
                    SalesReceiptsMainController.this.gssbQtyF.setText("");
                    SalesReceiptsMainController.this.proSpecsF.setText("");
                    SalesReceiptsMainController.this.gsplSeatF.setText("");
                    SalesReceiptsMainController.this.proIfPartF.setText("");
                    SalesReceiptsMainController.this.proMedProdctF.setText("");
                }
                SalesReceiptsMainController.this.observableSamllTableList.clear();
                SalesReceiptsMainController.this.saleActiveInfo(newItem);
                SalesReceiptsMainController.this.smallTableView.refresh();
            }
        });
    }

    private void bangding() {
        this.index.setCellValueFactory((Callback)new PropertyValueFactory(this.index.getId()));
        this.proCode.setCellValueFactory((Callback)new PropertyValueFactory(this.proCode.getId()));
        this.num.setCellValueFactory((Callback)new PropertyValueFactory(this.num.getId()));
        this.total.setCellValueFactory((Callback)new PropertyValueFactory(this.total.getId()));
        this.price.setCellValueFactory((Callback)new PropertyValueFactory(this.price.getId()));
        this.proUnit.setCellValueFactory((Callback)new PropertyValueFactory(this.proUnit.getId()));
        this.prcAmount.setCellValueFactory((Callback)new PropertyValueFactory(this.prcAmount.getId()));
        this.disc.setCellValueFactory((Callback)new PropertyValueFactory(this.disc.getId()));
        this.proName.setCellValueFactory((Callback)new PropertyValueFactory(this.proName.getId()));
        this.status.setCellValueFactory((Callback)new PropertyValueFactory(this.status.getId()));
        this.promotionName.setCellValueFactory((Callback)new PropertyValueFactory(this.promotionName.getId()));
        this.promotionType.setCellValueFactory((Callback)new PropertyValueFactory(this.promotionType.getId()));
        this.promotionContent.setCellValueFactory((Callback)new PropertyValueFactory(this.promotionContent.getId()));
        this.button.setCellValueFactory((Callback)new PropertyValueFactory(this.button.getId()));
    }

    private void numTextFieldChange() {
        String newValue = this.numTextField.getText();
        if (ObjectUtil.isEmpty(newValue) || this.selectFlag) {
            return;
        }
        String message = "";
        if (!CommonUtil.positiveInteger(newValue)) {
            message = "\u6570\u91cf\u8bf7\u8f93\u5165\u6b63\u6574\u6570";
        } else if (newValue.length() > 4) {
            message = "\u6570\u91cf\u957f\u5ea6\u6700\u5927\u4e3a4";
        }
        if (ObjectUtil.isNotEmpty(message)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", message);
            alert.show();
            return;
        }
        GetSalesReceiptsTableOutData rowData = (GetSalesReceiptsTableOutData)this.tableView.getSelectionModel().getSelectedItem();
        if (ObjectUtil.isEmpty(rowData)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u9009\u62e9\u5546\u54c1");
            alert.show();
            return;
        }
        this.numInFlag = true;
        this.pdAndExpController.setProCodeParam(rowData.getProCode());
        this.pdAndExpController.init();
        CommonUtil.showView(PdAndExpView.class, Modality.APPLICATION_MODAL);
        this.countMoney();
        this.numInFlag = false;
        if (ObjectUtil.isEmpty(this.pdAndExpController.getPdAndExpOutData())) {
            return;
        }
        ObservableList items = this.tableView.getItems();
        for (int i = 0; i < items.size(); ++i) {
            if (((GetSalesReceiptsTableOutData)items.get(i)).getIndex() != rowData.getIndex()) continue;
            String num = ((GetSalesReceiptsTableOutData)items.get(i)).getNum();
            Float money = Float.valueOf(0.0f);
            if (num.contains("*")) {
                ((GetSalesReceiptsTableOutData)items.get(i)).setNum(newValue + "*" + num.split("\\*")[1]);
                money = Float.valueOf((float)(Integer.valueOf(newValue) * Integer.valueOf(num.split("\\*")[1])) * Float.valueOf(((GetSalesReceiptsTableOutData)items.get(i)).getPrice()).floatValue());
            } else {
                ((GetSalesReceiptsTableOutData)items.get(i)).setNum(num);
                money = Float.valueOf((float)Integer.valueOf(num).intValue() * Float.valueOf(((GetSalesReceiptsTableOutData)items.get(i)).getPrice()).floatValue());
            }
            ((GetSalesReceiptsTableOutData)items.get(i)).setTotal(CommonUtil.format2(money.floatValue()));
            break;
        }
        this.tableView.refresh();
        this.countMoney();
        this.sale(rowData);
    }

    private void showSaleActSelectView(List<GetPromByProCodeOutData> getPromByProCodeOutData) {
        this.saleActSelectController.promByProCodeOutDataArrayList = getPromByProCodeOutData;
        this.saleActSelectController.init();
        Platform.runLater((Runnable)new Runnable(){

            @Override
            public void run() {
                CommonUtil.showView(SaleActSelectView.class, Modality.APPLICATION_MODAL);
            }
        });
    }

    public void countMoney() {
        ObservableList items = this.tableView.getItems();
        float amount = 0.0f;
        for (int i = 0; i < items.size(); ++i) {
            amount += Float.valueOf(((GetSalesReceiptsTableOutData)items.get(i)).getTotal()).floatValue();
        }
        this.totalMoney.setText(CommonUtil.format2(amount));
    }

    public void time() {
        timeTimer.schedule(new TimerTask(){

            @Override
            public void run() {
                Platform.runLater((Runnable)new Runnable(){

                    @Override
                    public void run() {
                        SalesReceiptsMainController.this.date.setText(DateUtil.format((Date)new Date(), (String)"yyyy/MM/dd"));
                        GregorianCalendar calendar = new GregorianCalendar();
                        int hour = calendar.get(11);
                        int minute = calendar.get(12);
                        int second = calendar.get(13);
                        String timeString = "";
                        timeString = hour < 10 ? "0" + hour + ":" : "" + hour + ":";
                        timeString = minute < 10 ? timeString + "0" + minute + ":" : timeString + "" + minute + ":";
                        timeString = second < 10 ? timeString + "0" + second : timeString + "" + second;
                        SalesReceiptsMainController.this.time.setText(timeString);
                    }
                });
            }
        }, 0L, 1000L);
    }

    @FXML
    private void keytoolBtn() {
        if (this.keytoolPane.isVisible()) {
            this.keytoolPane.setVisible(false);
        } else {
            this.keytoolPane.setVisible(true);
        }
    }

    @FXML
    private void keytoolBtnShow() {
        this.keytoolPane.setVisible(true);
    }

    @FXML
    private void keytoolBtnHide() {
        this.keytoolPane.setVisible(false);
    }

    public void changDutyTip() {
        Timer changeDutyTimer = (Timer)CacheUtil.get("changeDutyTimer");
        if (ObjectUtil.isEmpty(changeDutyTimer)) {
            changeDutyTimer = new Timer();
            changeDutyTimer.schedule(new TimerTask(){

                @Override
                public void run() {
                    if (SalesReceiptsMainController.this.cashierDutyController.checkChange()) {
                        return;
                    }
                    CacheUtil.put("needChange", 1);
                    if ((Integer)CacheUtil.get("needChange") == 1) {
                        Platform.runLater((Runnable)new Runnable(){

                            @Override
                            public void run() {
                                boolean isMainCurrentView = (Boolean)CacheUtil.get("isMainCurrentView");
                                if (isMainCurrentView) {
                                    boolean isChangeDutyTipCurrentView;
                                    boolean out = SalesReceiptsMainController.this.cashierDutyController.checkChange();
                                    boolean isChangeDutyCurrentView = (Boolean)CacheUtil.get("isChangeDutyCurrentView");
                                    Object temp = CacheUtil.get("isChangeDutyTipCurrentView");
                                    boolean bl = isChangeDutyTipCurrentView = ObjectUtil.isEmpty(temp) ? false : (Boolean)temp;
                                    if (!(out || isChangeDutyCurrentView || isChangeDutyTipCurrentView)) {
                                        SalesReceiptsMainController.this.changeDutyController.init();
                                        CommonUtil.showView(ChangeDutyView.class, Modality.APPLICATION_MODAL);
                                    }
                                }
                            }
                        });
                    }
                }
            }, 300000L, 300000L);
            CacheUtil.put("changeDutyTimer", changeDutyTimer);
        }
    }

    public void cancelTimer() {
        Timer changeDutyTimer = (Timer)CacheUtil.get("changeDutyTimer");
        if (ObjectUtil.isNotEmpty(changeDutyTimer)) {
            changeDutyTimer.cancel();
        }
    }

    @FXML
    private void AddMemberAction(ActionEvent event) {
        this.changeStage();
        this.expand("memberMamager", "memberAddOrEdit");
    }

    @FXML
    private void saleReturnAction(ActionEvent event) {
        this.changeStage();
        this.expand("salesManage", "saleReturn");
    }

    @FXML
    private void replenishAction(ActionEvent event) {
        this.changeStage();
        this.expand("accept-manage", "replenish");
    }

    @FXML
    private void dailyReconcileAction(ActionEvent event) {
        this.changeStage();
        this.expand("finMamager", "dailyReconcile");
    }

    @FXML
    private void salesInquireAction(ActionEvent event) {
        this.changeStage();
        this.expand("salesManage", "salesInquire");
    }

    @FXML
    private void productBasicAction(ActionEvent event) {
        this.changeStage();
        this.expand("qualityMamager", "productBasic");
    }

    @FXML
    private void saleRecipelRecordAction(ActionEvent event) {
        this.changeStage();
        this.expand("qualityMamager", "saleRecipelRecord");
    }

    @FXML
    private void oToAction(ActionEvent event) {
        CommonUtil.showView(OTOView.class, Modality.APPLICATION_MODAL);
    }

    private void changeStage() {
        this.clearKey();
        GysApplication.showView(com.gys.view.index.IndexView.class);
        Stage stage = GUIState.getStage();
        stage.requestFocus();
    }

    private void expand(String userDataParent, String userDataChild) {
        Node node = IndexController.nodeMap.get(userDataParent);
        if (!((TitledPane)node).isExpanded()) {
            ((TitledPane)node).setExpanded(true);
        }
        this.indexController.expandedOther(node);
        this.indexController.changeView(userDataChild);
    }

    @FXML
    private void fastAction() {
        if (this.fastPane.isVisible()) {
            this.fastPane.setVisible(false);
            this.modelPane.setLayoutY(layoutYSour - 35.0);
        } else {
            this.fastPane.setVisible(true);
            this.modelPane.setLayoutY(layoutYSour.doubleValue());
        }
    }

    public void inputMember() {
        this.queryMemberController.init();
        CommonUtil.showView(QueryMemberView.class, Modality.APPLICATION_MODAL);
    }

    private void focusChange() {
        new Timer().schedule(new TimerTask(){

            @Override
            public void run() {
                Platform.runLater((Runnable)new Runnable(){

                    @Override
                    public void run() {
                        SalesReceiptsMainController.this.inputTextField.requestFocus();
                    }
                });
            }
        }, 100L);
    }

    @FXML
    private void inputNameAction() {
        String inputText = this.inputTextField.getText().trim();
        if (ObjectUtil.isEmpty(inputText) || inputText.length() > 20) {
            this.shopName.requestFocus();
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8f93\u5165\u4e0d\u80fd\u4e3a\u7a7a\u4e14\u957f\u5ea6\u5c0f\u4e8e\u7b49\u4e8e20");
            alert.showAndWait();
            this.focusChange();
            return;
        }
        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("nameOrCode", inputText);
        HttpJson httpJson = SalesReceiptsUtil.queryProduct(param);
        if (!httpJson.isSuccess()) {
            this.shopName.requestFocus();
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJson.getMsg());
            alert.showAndWait();
            this.focusChange();
            return;
        }
        this.queryProductOutData = JSON.parseArray((String)httpJson.getMsg(), GetQueryProductOutData.class);
        if (this.queryProductOutData.size() == 0) {
            this.shopName.requestFocus();
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u6ca1\u6709\u67e5\u5230\u6570\u636e");
            alert.showAndWait();
            this.focusChange();
            return;
        }
        if (this.queryProductOutData.size() == 1) {
            this.queryProductDetail(this.queryProductOutData.get(0).getProCode(), null);
        } else {
            Platform.runLater((Runnable)new Runnable(){

                @Override
                public void run() {
                    SalesReceiptsMainController.this.productQueryController.init();
                    CommonUtil.showView(ProductQueryView.class, Modality.APPLICATION_MODAL);
                }
            });
        }
        this.numTextField.requestFocus();
    }

    public String countSenglePro(String code) {
        float count = 0.0f;
        for (int i = 0; i < this.tableView.getItems().size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)this.tableView.getItems().get(i);
            if (!code.equals(item.getProCode()) || "1".equals(item.getIsGift()) || "\u62c6\u96f6".equals(item.getStatus()) || "\u6539\u4ef7".equals(item.getStatus()) || "exclusion1".equals(item.getGsphExclusion()) || "exclusion3".equals(item.getGsphExclusion())) continue;
            count += Float.valueOf(item.getNum()).floatValue();
        }
        return String.valueOf(count);
    }

    public List<GetPromByProCodeOutData> saleActiveInfo(GetSalesReceiptsTableOutData detailOutData) {
        if (!((Boolean)CacheUtil.get("networkFlag")).booleanValue()) {
            return new ArrayList<GetPromByProCodeOutData>();
        }
        for (int i = 0; i < this.tableView.getItems().size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)this.tableView.getItems().get(i);
            if ("1".equals(item.getIsGift()) || !item.getProCode().equals(detailOutData.getProCode()) || !"exclusion1".equals(item.getGsphExclusion()) && !"exclusion3".equals(item.getGsphExclusion())) continue;
            return new ArrayList<GetPromByProCodeOutData>();
        }
        this.observableSamllTableList.clear();
        this.smallTableView.refresh();
        HashSet<String> allC = new HashSet<String>();
        HashSet<String> proC = new HashSet<String>();
        for (int i = 0; i < this.tableView.getItems().size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)this.tableView.getItems().get(i);
            if ("1".equals(item.getIsGift())) continue;
            if ("exclusion1".equals(item.getGsphExclusion())) {
                proC.add(item.getProCode());
                continue;
            }
            if (!"exclusion3".equals(item.getGsphExclusion())) continue;
            allC.add(item.getProCode());
        }
        Float totalNum = Float.valueOf(this.countSenglePro(detailOutData.getProCode()));
        BigDecimal totalMoney = new BigDecimal(totalNum.floatValue()).multiply(new BigDecimal(detailOutData.getPrcAmount()));
        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("nameOrCode", detailOutData.getProCode());
        GetQueryMemberOutData memberOutData = (GetQueryMemberOutData)CacheUtil.get("memberOutData");
        if (ObjectUtil.isNotEmpty(memberOutData)) {
            param.put("memberType", memberOutData.getTypeId());
        }
        param.put("totalNum", totalNum);
        param.put("num", this.countSenglePro(detailOutData.getProCode()));
        param.put("totalMoney", totalMoney);
        param.put("proNumAmtMap", this.proGroup());
        param.put("proIdNumMap", this.proSingleLineGroup());
        param.put("allC", allC);
        param.put("proC", proC);
        ObservableList allProduct = this.tableView.getItems();
        param.put("allProduct", allProduct);
        HttpJson httpJson = SalesReceiptsUtil.promByProCode(param);
        List outData = null;
        if (!httpJson.isSuccess()) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJson.getMsg());
            alert.showAndWait();
            return null;
        }
        outData = JSON.parseArray((String)httpJson.getMsg(), GetPromByProCodeOutData.class);
        this.observableSamllTableList = FXCollections.observableArrayList((Collection)outData);
        this.smallTableView.setItems(this.observableSamllTableList);
        return outData;
    }

    private List<GetSalesReceiptsTableOutData> getProItems() {
        ArrayList<GetSalesReceiptsTableOutData> items = new ArrayList<GetSalesReceiptsTableOutData>();
        for (int i = 0; i < this.observableTableList.size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)this.observableTableList.get(i);
            if ("1".equals(item.getIsGift()) || "\u62c6\u96f6".equals(item.getStatus()) || "\u6539\u4ef7".equals(item.getStatus()) || "exclusion3".equals(item.getGsphExclusion())) continue;
            items.add(item);
        }
        return items;
    }

    public Map<String, GetNumAmtData> proSingleLineGroup() {
        HashMap<String, GetNumAmtData> map = new HashMap<String, GetNumAmtData>();
        for (int i = 0; i < this.tableView.getItems().size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)this.tableView.getItems().get(i);
            if ("1".equals(item.getIsGift()) || "\u62c6\u96f6".equals(item.getStatus()) || "\u6539\u4ef7".equals(item.getStatus())) continue;
            GetNumAmtData numAmtData = new GetNumAmtData();
            numAmtData.setIndex(item.getIndex());
            numAmtData.setNum(item.getNum());
            numAmtData.setMoney(item.getTotal());
            map.put(item.getProCode(), numAmtData);
        }
        return map;
    }

    public Map<String, GetNumAmtData> proGroup() {
        HashMap<String, GetNumAmtData> map = new HashMap<String, GetNumAmtData>();
        for (int i = 0; i < this.tableView.getItems().size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)this.tableView.getItems().get(i);
            if ("1".equals(item.getIsGift()) || "\u62c6\u96f6".equals(item.getStatus()) || "\u6539\u4ef7".equals(item.getStatus()) || "exclusion3".equals(item.getGsphExclusion())) continue;
            if (item.getNum().contains("*")) {
                String[] split = item.getNum().split("\\*");
                int countNum = Integer.valueOf(split[0]) * Integer.valueOf(split[1]);
                item.setNum(String.valueOf(countNum));
            }
            if (ObjectUtil.isEmpty(map.get(item.getProCode()))) {
                GetNumAmtData numAmtData = new GetNumAmtData();
                numAmtData.setNum(item.getNum());
                numAmtData.setProName(item.getProName());
                BigDecimal price = new BigDecimal(0);
                if (!"exclusion2".equals(item.getGsphExclusion())) {
                    price = new BigDecimal(item.getNum()).multiply(new BigDecimal(item.getPrcAmount()));
                }
                numAmtData.setMoney(CommonUtil.bigDecimalTo2fStr(price));
                map.put(item.getProCode(), numAmtData);
                continue;
            }
            GetNumAmtData numAmtDataTemp = (GetNumAmtData)map.get(item.getProCode());
            GetNumAmtData numAmtData = new GetNumAmtData();
            numAmtData.setProName(item.getProName());
            numAmtData.setNum(String.valueOf(Float.valueOf(item.getNum()).floatValue() + Float.valueOf(numAmtDataTemp.getNum()).floatValue()));
            if (!"exclusion2".equals(item.getGsphExclusion())) {
                BigDecimal price = new BigDecimal(item.getNum()).multiply(new BigDecimal(item.getPrcAmount()));
                numAmtData.setMoney(CommonUtil.bigDecimalTo2fStr(price.add(new BigDecimal(numAmtDataTemp.getMoney()))));
            } else {
                numAmtData.setMoney(numAmtDataTemp.getMoney());
            }
            map.put(item.getProCode(), numAmtData);
        }
        return map;
    }

    public GetSalesReceiptsTableOutData queryPro(String proCode) {
        HashMap<String, Object> paramDetail = new HashMap<String, Object>();
        paramDetail.put("nameOrCode", proCode);
        HttpJson httpJsonDetail = SalesReceiptsUtil.queryProductDetail(paramDetail);
        GetSalesReceiptsTableOutData detailOutData = null;
        if (httpJsonDetail.isSuccess()) {
            detailOutData = (GetSalesReceiptsTableOutData)JSON.parseObject((String)httpJsonDetail.getMsg(), GetSalesReceiptsTableOutData.class);
            if (ObjectUtil.isEmpty(detailOutData)) {
                Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u6ca1\u6709\u5bf9\u5e94\u5546\u54c1");
                alert.showAndWait();
                return null;
            }
        } else {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJsonDetail.getMsg());
            alert.showAndWait();
            return null;
        }
        return detailOutData;
    }

    public void queryProductDetail(String proCode, TableInitData tableInitData) {
        GetSalesReceiptsTableOutData detailOutData = this.queryPro(proCode);
        if (ObjectUtil.isEmpty(detailOutData)) {
            return;
        }
        detailOutData.setNum("1");
        if (ObjectUtil.isNotEmpty(tableInitData)) {
            detailOutData.setTableInitData(tableInitData);
        }
        this.proUsage.setText(detailOutData.getProUsage());
        this.proContraindication.setText(detailOutData.getProContraindication());
        detailOutData.setPrcAmountD(CommonUtil.format2(Float.valueOf(detailOutData.getPrcAmount()).floatValue()));
        GetQueryMemberOutData memberOutData = (GetQueryMemberOutData)CacheUtil.get("memberOutData");
        if (ObjectUtil.isNotEmpty(memberOutData)) {
            detailOutData.setDisc(memberOutData.getDis());
            BigDecimal price = new BigDecimal(detailOutData.getPrcAmount()).divide(new BigDecimal(100)).multiply(new BigDecimal(memberOutData.getDis()));
            detailOutData.setPrice(CommonUtil.bigDecimalTo2fStr(price));
            BigDecimal totalMoney = price.multiply(new BigDecimal(detailOutData.getNum()));
            detailOutData.setTotal(CommonUtil.bigDecimalTo2fStr(totalMoney));
            detailOutData.setStatus("\u4f1a\u5458\u5361\u6298\u6263");
        }
        this.initTable(detailOutData);
    }

    public void covertMoneyFormat(GetSalesReceiptsTableOutData detailOutData) {
        detailOutData.setPrcAmount(CommonUtil.format2(Float.valueOf(detailOutData.getPrcAmount()).floatValue()));
        detailOutData.setPrice(CommonUtil.format2(Float.valueOf(detailOutData.getPrice()).floatValue()));
        detailOutData.setTotal(CommonUtil.format2(Float.valueOf(detailOutData.getTotal()).floatValue()));
    }

    public void initTable(GetSalesReceiptsTableOutData detailOutData) {
        if (this.tableView.getItems().size() == 0) {
            DateTime date = DateUtil.date();
            String yearStr = DateUtil.format((Date)date, (String)"yyMMdd");
            String secondTimestampTwo = CommonUtil.getSecondTimestampTwo((Date)date);
            String secondTimestamp = secondTimestampTwo.substring(secondTimestampTwo.length() - 9);
            int random = (int)(Math.random() * 900.0 + 100.0);
            String caseIdStr = "SD" + yearStr + secondTimestamp + random;
            this.caseId.setText(caseIdStr);
            this.createSaleFlag = false;
        }
        this.covertMoneyFormat(detailOutData);
        ObservableList items = this.tableView.getItems();
        items.add(detailOutData);
        for (int i = 0; i < items.size(); ++i) {
            ((GetSalesReceiptsTableOutData)items.get(i)).setIndex(String.valueOf(i + 1));
        }
        this.observableTableList = FXCollections.observableArrayList((Collection)items);
        this.tableView.setItems(this.observableTableList);
        this.tableView.getSelectionModel().select(items.size() - 1);
        this.countMoney();
        this.setPd(detailOutData);
    }

    public void setPd(final GetSalesReceiptsTableOutData detailOutData) {
        if (ObjectUtil.isEmpty(detailOutData.getTableInitData())) {
            this.pdAndExpController.setProCodeParam(detailOutData.getProCode());
            this.pdAndExpController.init();
            new Timer().schedule(new TimerTask(){

                @Override
                public void run() {
                    Platform.runLater((Runnable)new Runnable(){

                        @Override
                        public void run() {
                            CommonUtil.showView(PdAndExpView.class, Modality.APPLICATION_MODAL);
                            SalesReceiptsMainController.this.countMoney();
                            SalesReceiptsMainController.this.sale(detailOutData);
                        }
                    });
                }
            }, 500L);
        } else {
            this.proSpecsF.setText(detailOutData.getProSpecs());
            this.proPlaceF.setText(detailOutData.getProPlace());
            this.proIfPartF.setText(detailOutData.getProIfPart());
            this.proMedProdctF.setText(detailOutData.getProMedProdct());
            this.gsplSeatF.setText(detailOutData.getGsplSeat());
            this.gssbQtyF.setText(detailOutData.getTableInitData().getGssQty());
            this.gssbBatchNoF.setText(detailOutData.getTableInitData().getGssbBatchNo());
            this.gssbVaildDateF.setText(detailOutData.getTableInitData().getGssbVaildDate());
            GetPdAndExpOutData getPdAndExpOutData = new GetPdAndExpOutData();
            getPdAndExpOutData.setProCode(detailOutData.getProCode());
            getPdAndExpOutData.setProName(detailOutData.getProName());
            getPdAndExpOutData.setGssbQty(detailOutData.getTableInitData().getGssQty());
            getPdAndExpOutData.setProSpecs(detailOutData.getProSpecs());
            getPdAndExpOutData.setProPlace(detailOutData.getProPlace());
            getPdAndExpOutData.setGsplSeat(detailOutData.getGsplSeat());
            getPdAndExpOutData.setProIfPart(detailOutData.getProIfPart());
            getPdAndExpOutData.setProMedProdct(detailOutData.getProMedProdct());
            getPdAndExpOutData.setGssbBatchNo(detailOutData.getTableInitData().getGssbBatchNo());
            getPdAndExpOutData.setGssbVaildDate(detailOutData.getTableInitData().getGssbVaildDate());
            getPdAndExpOutData.setGssbQty(detailOutData.getTableInitData().getGssQty());
            detailOutData.setPdAndExpData(getPdAndExpOutData);
            this.sale(detailOutData);
        }
    }

    public void sale(GetSalesReceiptsTableOutData detailOutData) {
        List<GetPromByProCodeOutData> getPromByProCodeOutData = this.saleActiveInfo(detailOutData);
        if (ObjectUtil.isNotEmpty(getPromByProCodeOutData)) {
            this.showSaleActSelectView(getPromByProCodeOutData);
        }
    }

    public void initTableExc(String actPrice) {
        ObservableList items = this.tableView.getItems();
        ArrayList temp = new ArrayList();
        for (int i = 0; i < items.size(); ++i) {
            temp.add(items.get(i));
        }
        GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)temp.get(temp.size() - 1);
        item.setPrice(actPrice);
        this.observableTableList.clear();
        this.observableTableList = FXCollections.observableArrayList(temp);
        this.tableView.setItems(this.observableTableList);
    }

    private void num() {
        this.numTextField.requestFocus();
    }

    private void backAction() {
        this.clearKey();
        GysApplication.showView(com.gys.view.index.IndexView.class);
        String userData = (String)CacheUtil.get("userData");
        if (ObjectUtil.isNotEmpty(userData)) {
            this.indexController.changeView(userData);
        }
        if (!this.indexController.getBigLeftPane().isVisible()) {
            this.indexController.tongleLeftPane();
        }
    }

    private void serverAction() {
        if (!((Boolean)CacheUtil.get("networkFlag")).booleanValue()) {
            this.payAction();
            return;
        }
        GetServerInData inData = new GetServerInData();
        inData.setStoreCode(((GetLoginStoreOutData)CacheUtil.get("store")).getStoCode());
        inData.setBillNo(this.caseId.getText());
        HttpJson rsp = ServerUtil.detail(inData);
        if (rsp.isSuccess()) {
            this.serverController.init();
            CommonUtil.showView(com.gys.view.server.IndexView.class, Modality.APPLICATION_MODAL);
        } else {
            this.payAction();
        }
    }

    public void payAction() {
        this.hasSpecialDrugs();
        if (this.specialDrugList.size() > 0 && this.recipelDrugList.size() > 0) {
            Platform.runLater((Runnable)new Runnable(){

                @Override
                public void run() {
                    SalesReceiptsMainController.this.specialDrugsController.init();
                    CommonUtil.showView(SpecialDrugsView.class, Modality.APPLICATION_MODAL);
                    if (!((SalesReceiptsMainController)SalesReceiptsMainController.this).specialDrugsController.inputFlag) {
                        return;
                    }
                    SalesReceiptsMainController.this.recipelDrugsController.init();
                    CommonUtil.showView(RecipelDrugsView.class, Modality.APPLICATION_MODAL);
                    SalesReceiptsMainController.this.createSale();
                    SalesReceiptsMainController.this.pay();
                }
            });
        } else if (this.recipelDrugList.size() > 0) {
            Platform.runLater((Runnable)new Runnable(){

                @Override
                public void run() {
                    SalesReceiptsMainController.this.recipelDrugsController.init();
                    CommonUtil.showView(RecipelDrugsView.class, Modality.APPLICATION_MODAL);
                    SalesReceiptsMainController.this.createSale();
                    SalesReceiptsMainController.this.pay();
                }
            });
        } else if (this.specialDrugList.size() > 0) {
            Platform.runLater((Runnable)new Runnable(){

                @Override
                public void run() {
                    SalesReceiptsMainController.this.specialDrugsController.init();
                    CommonUtil.showView(SpecialDrugsView.class, Modality.APPLICATION_MODAL);
                    if (!((SalesReceiptsMainController)SalesReceiptsMainController.this).specialDrugsController.inputFlag) {
                        return;
                    }
                    SalesReceiptsMainController.this.pay();
                }
            });
        } else {
            this.pay();
        }
    }

    private void pay() {
        log.info("\u652f\u4ed8\u3002\u3002\u3002\u3002\u3002");
        Platform.runLater((Runnable)new Runnable(){

            @Override
            public void run() {
                if (((Boolean)CacheUtil.get("networkFlag")).booleanValue()) {
                    SalesReceiptsMainController.this.giftCardView();
                    HashMap<String, Object> param = new HashMap<String, Object>();
                    Map<String, GetNumAmtData> map = SalesReceiptsMainController.this.proGroup();
                    param.put("proNumAmtMap", map);
                    HttpJson httpJson = SalesReceiptsUtil.giftSelect(param);
                    List outData = new ArrayList();
                    if (!httpJson.isSuccess()) {
                        Alert alert = SalesReceiptsMainController.this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJson.getMsg());
                        alert.showAndWait();
                        return;
                    }
                    outData = JSON.parseArray((String)httpJson.getMsg(), GiftData.class);
                    if (ObjectUtil.isNotEmpty(outData)) {
                        ((SalesReceiptsMainController)SalesReceiptsMainController.this).giftController.giftData = outData;
                        SalesReceiptsMainController.this.giftController.init();
                        CommonUtil.showView(GiftView.class, Modality.APPLICATION_MODAL);
                    }
                }
                SalesReceiptsMainController.this.payController.init();
                CommonUtil.showView(IndexView.class, Modality.APPLICATION_MODAL);
            }
        });
    }

    public void countPoint() {
        if (!((Boolean)CacheUtil.get("networkFlag")).booleanValue()) {
            return;
        }
        GetQueryMemberOutData memberOutData = (GetQueryMemberOutData)CacheUtil.get("memberOutData");
        if (ObjectUtil.isEmpty(memberOutData)) {
            return;
        }
        if (ObjectUtil.isEmpty(this.gaiaSdMemberClass)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u4f1a\u5458\u79ef\u5206\u8bbe\u7f6e\u4e3a\u7a7a,\u4e0d\u505a\u79ef\u5206");
            alert.showAndWait();
            return;
        }
        if (StrUtil.isBlank((CharSequence)memberOutData.getPoint())) {
            memberOutData.setPoint("0");
        }
        float givePoint = Float.valueOf(memberOutData.getPoint()).floatValue();
        float givePointTemp = 0.0f;
        String totalMoneyText = this.totalMoney.getText();
        BigDecimal gsiasIntegralMinAmt = this.gaiaSdIntegralAddSet.getGsiasIntegralMinAmt();
        String gsiasIntegralMax = this.gaiaSdIntegralAddSet.getGsiasIntegralMax();
        String gsiasChangeSet = this.gaiaSdIntegralAddSet.getGsiasChangeSet();
        if (0.0f != gsiasIntegralMinAmt.floatValue() && new BigDecimal(totalMoneyText).compareTo(gsiasIntegralMinAmt) == -1) {
            return;
        }
        BigDecimal gsiasAmtPm1 = this.gaiaSdIntegralAddSet.getGsiasAmtPm1();
        BigDecimal gsiasAmtPm2 = this.gaiaSdIntegralAddSet.getGsiasAmtPm2();
        BigDecimal gsiasAmtPm3 = this.gaiaSdIntegralAddSet.getGsiasAmtPm3();
        BigDecimal gsiasAmtPm4 = this.gaiaSdIntegralAddSet.getGsiasAmtPm4();
        BigDecimal gsiasAmtPm5 = this.gaiaSdIntegralAddSet.getGsiasAmtPm5();
        BigDecimal gsiasAmtPm6 = this.gaiaSdIntegralAddSet.getGsiasAmtPm6();
        String gsiasIntegralPm1 = this.gaiaSdIntegralAddSet.getGsiasIntegralPm1();
        String gsiasIntegralPm2 = this.gaiaSdIntegralAddSet.getGsiasIntegralPm2();
        String gsiasIntegralPm3 = this.gaiaSdIntegralAddSet.getGsiasIntegralPm3();
        String gsiasIntegralPm4 = this.gaiaSdIntegralAddSet.getGsiasIntegralPm4();
        String gsiasIntegralPm5 = this.gaiaSdIntegralAddSet.getGsiasIntegralPm5();
        String gsiasIntegralPm6 = this.gaiaSdIntegralAddSet.getGsiasIntegralPm6();
        BigDecimal gsmcAmtSale = this.gaiaSdMemberClass.getGsmcAmtSale();
        Float gsmcIntegralSale = Float.valueOf(this.gaiaSdMemberClass.getGsmcIntegralSale());
        BigDecimal zero = new BigDecimal(0);
        ObservableList items = this.tableView.getItems();
        for (int i = 0; i < items.size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)items.get(i);
            if ("1".equals(item.getIsGift())) continue;
            float totalSengleMoney = Float.valueOf(item.getTotal()).floatValue() / Float.valueOf(item.getDisc()).floatValue() * 100.0f;
            if ("0".equals(gsiasChangeSet) && totalSengleMoney < 1.0f) continue;
            float everyPrice = 0.0f;
            float everyPoint = 0.0f;
            if ("\u4fc3\u9500".equals(item.getStatus()) || "\u4f1a\u5458\u5361\u6298\u6263".equals(item.getStatus()) || "\u4f1a\u5458\u4ef7".equals(item.getStatus()) || "\u4f1a\u5458\u65e5\u6298\u6263".equals(item.getStatus()) || "\u4f1a\u5458\u65e5\u7279\u4ef7".equals(item.getStatus())) {
                GetPromByProCodeOutData selectPromByProCodeOutData = item.getSelectPromByProCodeOutData();
                if (ObjectUtil.isEmpty(selectPromByProCodeOutData) || !"1".equals(selectPromByProCodeOutData.getGspscInteFlag())) continue;
                String promotionTypeId = selectPromByProCodeOutData.getPromotionTypeId();
                if ("PROM_SINGLE".equals(promotionTypeId)) {
                    if (zero.compareTo(gsiasAmtPm1) == 0 || "0".equals(gsiasIntegralPm1)) {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsmcAmtSale)).floatValue();
                        everyPoint = Float.valueOf(gsmcIntegralSale.floatValue()).floatValue();
                    } else {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsiasAmtPm1)).floatValue();
                        everyPoint = Float.valueOf(gsiasIntegralPm1).floatValue();
                    }
                } else if ("PROM_SERIES".equals(promotionTypeId)) {
                    if (zero.compareTo(gsiasAmtPm2) == 0 || "0".equals(gsiasIntegralPm2)) {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsmcAmtSale)).floatValue();
                        everyPoint = Float.valueOf(gsmcIntegralSale.floatValue()).floatValue();
                    } else {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsiasAmtPm2)).floatValue();
                        everyPoint = Float.valueOf(gsiasIntegralPm2).floatValue();
                    }
                } else if ("PROM_COUPON".equals(promotionTypeId)) {
                    if (zero.compareTo(gsiasAmtPm4) == 0 || "0".equals(gsiasIntegralPm4)) {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsmcAmtSale)).floatValue();
                        everyPoint = Float.valueOf(gsmcIntegralSale.floatValue()).floatValue();
                    } else {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsiasAmtPm4)).floatValue();
                        everyPoint = Float.valueOf(gsiasIntegralPm4).floatValue();
                    }
                } else if ("PROM_HY".equals(promotionTypeId)) {
                    if (zero.compareTo(gsiasAmtPm5) == 0 || "0".equals(gsiasIntegralPm5)) {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsmcAmtSale)).floatValue();
                        everyPoint = Float.valueOf(gsmcIntegralSale.floatValue()).floatValue();
                    } else {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsiasAmtPm5)).floatValue();
                        everyPoint = Float.valueOf(gsiasIntegralPm5).floatValue();
                    }
                } else if ("PROM_HY".equals(promotionTypeId)) {
                    if (zero.compareTo(gsiasAmtPm6) == 0 || "0".equals(gsiasIntegralPm6)) {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsmcAmtSale)).floatValue();
                        everyPoint = Float.valueOf(gsmcIntegralSale.floatValue()).floatValue();
                    } else {
                        everyPrice = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsiasAmtPm6)).floatValue();
                        everyPoint = Float.valueOf(gsiasIntegralPm6).floatValue();
                    }
                }
                int gspscInteRate = Integer.valueOf(selectPromByProCodeOutData.getGspscInteRate());
                float pointV = (float)((int)(totalSengleMoney / everyPrice)) * everyPoint * (float)gspscInteRate;
                if (!"0".equals(gsiasIntegralMax) && (givePointTemp += pointV) > Float.valueOf(gsiasIntegralMax).floatValue()) break;
                givePoint += pointV;
                continue;
            }
            Float aFloat = Float.valueOf(CommonUtil.bigDecimalTo2fStr(gsmcAmtSale));
            float pointV = (float)((int)(totalSengleMoney / aFloat.floatValue())) * gsmcIntegralSale.floatValue();
            if (!"0".equals(gsiasIntegralMax) && (givePointTemp += pointV) > Float.valueOf(gsiasIntegralMax).floatValue()) break;
            givePoint += pointV;
        }
        log.info("\u9001\u79ef\u5206" + givePoint);
        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("cardId", memberOutData.getCardNum());
        param.put("givePoint", Float.valueOf(givePoint));
        HttpJson httpJson = SalesReceiptsUtil.givePoint(param);
        if (!httpJson.isSuccess()) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJson.getMsg());
            alert.showAndWait();
            return;
        }
    }

    private void giftCardView() {
        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("proNumAmtMap", this.proGroup());
        HttpJson httpJson = SalesReceiptsUtil.giftCardByProCode(param);
        List outData = new ArrayList();
        if (!httpJson.isSuccess()) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJson.getMsg());
            alert.showAndWait();
            return;
        }
        outData = JSON.parseArray((String)httpJson.getMsg(), GetGiftCardOutData.class);
        if (ObjectUtil.isNotEmpty(outData)) {
            this.giftCardController.getGiftCardOutData = outData;
            this.giftCardController.init();
            CommonUtil.showView(GiftCardView.class, Modality.APPLICATION_MODAL);
        }
    }

    private void hasSpecialDrugs() {
        ObservableList dataList = this.tableView.getItems();
        if (ObjectUtil.isEmpty(dataList)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u8bf7\u8f93\u5165\u5546\u54c1");
            alert.showAndWait();
            return;
        }
        this.specialDrugList.clear();
        this.recipelDrugList.clear();
        for (int i = 0; i < dataList.size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)dataList.get(i);
            if (ObjectUtil.isNotEmpty(item.getProControlClass())) {
                this.specialDrugList.add(item);
                item.setSpecial(true);
            } else {
                item.setSpecial(false);
            }
            if (!"4".equals(item.getProPresclass()) && !"1".equals(item.getProPresclass()) || "3".equals(item.getStorageArea())) continue;
            this.recipelDrugList.add(item);
        }
    }

    public boolean createSale() {
        GaiaSdSaleH gaiaSdSaleH = new GaiaSdSaleH();
        GetUserOutData getUserOutData = this.getLoginUser();
        gaiaSdSaleH.setClientId(getUserOutData.getClient());
        gaiaSdSaleH.setGsshCallAllow("1");
        gaiaSdSaleH.setGsshEmpGroupName((String)CacheUtil.get("empGroupName"));
        gaiaSdSaleH.setGsshBrId(getUserOutData.getDepId());
        gaiaSdSaleH.setGsshBillNo(this.caseId.getText());
        gaiaSdSaleH.setGsshDate(DateUtil.format((Date)DateUtil.date(), (String)"yyyyMMdd"));
        gaiaSdSaleH.setGsshTime(DateUtil.format((Date)DateUtil.date(), (String)"HHmmss"));
        gaiaSdSaleH.setGsshEmp(this.workUserId.getText());
        gaiaSdSaleH.setGsshReplaceBrId(this.deptId);
        gaiaSdSaleH.setGsshReplaceSalerId(this.replaceUserId);
        GetQueryMemberOutData memberOutData = (GetQueryMemberOutData)CacheUtil.get("memberOutData");
        if (ObjectUtil.isNotEmpty(memberOutData)) {
            gaiaSdSaleH.setGsshHykNo(memberOutData.getCardNum());
        }
        gaiaSdSaleH.setGsshRegisterVoucherId(this.getGdNo());
        gaiaSdSaleH.setGsshZkAmt(this.totalMoney.getText());
        gaiaSdSaleH.setGsshYsAmt(this.totalMoney.getText());
        gaiaSdSaleH.setGsshHideFlag("1");
        gaiaSdSaleH.setGsshCallQty("0");
        HashSet<String> proIdSet = new HashSet<String>();
        if (this.recipelDrugsController.numZhang > 1) {
            List<RecipelInfoInputData> recipelInfoInputDataList = this.recipelInfoInputController.recipelInfoInputDataList;
            for (int i = 0; i < recipelInfoInputDataList.size(); ++i) {
                List<SelectRecipelDrugsOutData> selectRecipelDrugsOutDataList = recipelInfoInputDataList.get(i).getRecipelDrugsList();
                for (int j = 0; j < selectRecipelDrugsOutDataList.size(); ++j) {
                    proIdSet.add(selectRecipelDrugsOutDataList.get(j).getProCode());
                }
            }
        }
        ObservableList salesReceiptsTableOutData = this.tableView.getItems();
        HashSet<String> activeSet = new HashSet<String>();
        ArrayList<GaiaSdSaleD> gaiaSdSaleDList = new ArrayList<GaiaSdSaleD>();
        for (int i = 0; i < salesReceiptsTableOutData.size(); ++i) {
            GetSalesReceiptsTableOutData item = (GetSalesReceiptsTableOutData)salesReceiptsTableOutData.get(i);
            GaiaSdSaleD gaiaSdSaleD = new GaiaSdSaleD();
            gaiaSdSaleD.setClientId(getUserOutData.getClient());
            gaiaSdSaleD.setGssdBillNo(this.caseId.getText());
            gaiaSdSaleD.setGssdBrId(getUserOutData.getDepId());
            gaiaSdSaleD.setGssdDate(DateUtil.format((Date)DateUtil.date(), (String)"yyyyMMdd"));
            gaiaSdSaleD.setGssdSerial(item.getIndex());
            gaiaSdSaleD.setGssdProId(item.getProCode());
            GetPdAndExpOutData pdAndExpData = item.getPdAndExpData();
            if (ObjectUtil.isNotEmpty(pdAndExpData)) {
                gaiaSdSaleD.setGssdBatchNo(pdAndExpData.getGssbBatchNo());
                gaiaSdSaleD.setGssdBatch(pdAndExpData.getGssbBatch());
                gaiaSdSaleD.setGssdValidDate(pdAndExpData.getGssbVaildDate());
            }
            gaiaSdSaleD.setGssdStCode(item.getGssdStCode());
            gaiaSdSaleD.setGssdPrc1(item.getPrcAmount());
            gaiaSdSaleD.setGssdPrc2(item.getPrice());
            gaiaSdSaleD.setGssdQty(item.getNum());
            gaiaSdSaleD.setGssdAmt(item.getTotal());
            gaiaSdSaleD.setGssdSalerId(item.getEmpId());
            gaiaSdSaleD.setGssdDoctorId(item.getDoctorId());
            gaiaSdSaleD.setGssdProStatus(item.getStatus());
            GetPromByProCodeOutData activeItem = item.getSelectPromByProCodeOutData();
            if (ObjectUtil.isNotEmpty(activeItem)) {
                gaiaSdSaleD.setGssdPmSubjectId(activeItem.getGsphVoucherId());
                gaiaSdSaleD.setGssdPmId(activeItem.getPromotionTypeId());
                gaiaSdSaleD.setGssdPmContent(activeItem.getPromotionContent());
                if (this.recipelDrugsController.numZhang == 1 && ObjectUtil.isNotEmpty(this.recipelInfoInputController.recipelInfoInputDataList)) {
                    gaiaSdSaleD.setGssdRecipelFlag("1");
                } else if (proIdSet.contains(item.getProCode())) {
                    gaiaSdSaleD.setGssdRecipelFlag("1");
                } else {
                    gaiaSdSaleD.setGssdRecipelFlag("0");
                }
                if (activeSet.add(activeItem.getPromotionTypeId())) {
                    if (activeSet.size() == 0) {
                        gaiaSdSaleH.setGsshPromotionType1(activeItem.getPromotionTypeId());
                    } else if (activeSet.size() == 1) {
                        gaiaSdSaleH.setGsshPromotionType2(activeItem.getPromotionTypeId());
                    } else if (activeSet.size() == 2) {
                        gaiaSdSaleH.setGsshPromotionType3(activeItem.getPromotionTypeId());
                    } else if (activeSet.size() == 3) {
                        gaiaSdSaleH.setGsshPromotionType4(activeItem.getPromotionTypeId());
                    } else if (activeSet.size() == 4) {
                        gaiaSdSaleH.setGsshPromotionType5(activeItem.getPromotionTypeId());
                    }
                }
            }
            if (item.isSpecial() && ObjectUtil.isNotEmpty(this.specialDrugsController.specialDrugsOutData)) {
                SpecialDrugsOutData specialDrugsOutData = this.specialDrugsController.specialDrugsOutData;
                gaiaSdSaleD.setGssdSpecialmedIdcard(specialDrugsOutData.getCardId());
                gaiaSdSaleD.setGssdSpecialmedName(specialDrugsOutData.getName());
                gaiaSdSaleD.setGssdSpecialmedSex(specialDrugsOutData.getSex());
                gaiaSdSaleD.setGssdSpecialmedBirthday(specialDrugsOutData.getBirthDate());
                gaiaSdSaleD.setGssdSpecialmedMobile(specialDrugsOutData.getPhone());
                gaiaSdSaleD.setGssdSpecialmedAddress(specialDrugsOutData.getAddress());
            }
            gaiaSdSaleDList.add(gaiaSdSaleD);
        }
        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("gaiaSdSaleH", gaiaSdSaleH);
        param.put("gaiaSdSaleDList", gaiaSdSaleDList);
        param.put("gsshHykPhone", this.phone.getText());
        param.put("selectDataIndexList", this.selectRecipelDrugsController.selectDataIndexList);
        HttpJson httpJson = SalesReceiptsUtil.createSale(param);
        if (httpJson.isSuccess()) {
            this.createSaleFlag = true;
            return true;
        }
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", httpJson.getMsg());
        alert.showAndWait();
        return false;
    }

    private String getGdNo() {
        String date = DateUtil.format((Date)new Date(), (String)"yyyyMMddHHmmssSSS");
        int ram = (int)(Math.random() * 900.0) + 100;
        return date + ram;
    }

    private void clearKey() {
        GUIState.getStage().getScene().setOnKeyReleased(null);
    }

    public void restNoInit() {
        this.observableTableList = FXCollections.observableArrayList(new ArrayList());
        this.tableView.getItems().clear();
        this.tableView.refresh();
        this.observableSamllTableList = FXCollections.observableArrayList(new ArrayList());
        this.smallTableView.getItems().clear();
        this.smallTableView.refresh();
        this.caseId.setText("");
        this.cardNum.setText("");
        this.name.setText("");
        this.phone.setText("");
        this.dis.setText("");
        this.type.setText("");
        this.point.setText("");
        CacheUtil.remove("memberOutData");
        this.totalMoney.setText("0.00");
        this.inputTextField.clear();
        this.proSpecsF.setText("");
        this.proPlaceF.setText("");
        this.gssbBatchNoF.setText("");
        this.gssbVaildDateF.setText("");
        this.empF.setText("");
        this.proIfPartF.setText("");
        this.doctorF.setText("");
        this.proMedProdctF.setText("");
        this.gsplSeatF.setText("");
        this.gssbQtyF.setText("");
        this.proUsage.setText("");
        this.proContraindication.setText("");
        this.numTextField.textProperty().removeListener(this.changeListener);
        this.numTextField.setText("");
    }

    public void rest() {
        this.observableTableList = FXCollections.observableArrayList(new ArrayList());
        this.tableView.getItems().clear();
        this.tableView.refresh();
        this.observableSamllTableList = FXCollections.observableArrayList(new ArrayList());
        this.smallTableView.getItems().clear();
        this.smallTableView.refresh();
        this.caseId.setText("");
        this.cardNum.setText("");
        this.name.setText("");
        this.phone.setText("");
        this.dis.setText("");
        this.type.setText("");
        this.point.setText("");
        CacheUtil.remove("memberOutData");
        this.totalMoney.setText("0.00");
        this.inputTextField.clear();
        this.proSpecsF.setText("");
        this.proPlaceF.setText("");
        this.gssbBatchNoF.setText("");
        this.gssbVaildDateF.setText("");
        this.empF.setText("");
        this.proIfPartF.setText("");
        this.doctorF.setText("");
        this.proMedProdctF.setText("");
        this.gsplSeatF.setText("");
        this.gssbQtyF.setText("");
        this.proUsage.setText("");
        this.proContraindication.setText("");
        this.numTextField.textProperty().removeListener(this.changeListener);
        this.numTextField.setText("");
        this.init();
    }

    public void restOrderInfo(GetRestOrderInfoOutData selectInfo, List<GetRestOrderDetailOutData> restOrderDetailOutDataList) {
        this.rest();
        this.caseId.setText(selectInfo.getGsshBillNo());
        this.totalMoney.setText(selectInfo.getGsshYsAmt());
        GetQueryMemberOutData queryMemberOutData = selectInfo.getQueryMemberOutData();
        if (ObjectUtil.isNotEmpty(queryMemberOutData)) {
            CacheUtil.put("memberOutData", queryMemberOutData);
            this.cardNum.setText(queryMemberOutData.getCardNum());
            this.name.setText(queryMemberOutData.getName());
            this.phone.setText(queryMemberOutData.getPhone());
            this.dis.setText(queryMemberOutData.getDis());
            this.type.setText(queryMemberOutData.getType());
            this.point.setText(queryMemberOutData.getPoint());
        }
        ArrayList<GetSalesReceiptsTableOutData> salesReceiptsTableOutDataList = new ArrayList<GetSalesReceiptsTableOutData>();
        for (int i = 0; i < restOrderDetailOutDataList.size(); ++i) {
            salesReceiptsTableOutDataList.add(restOrderDetailOutDataList.get(i).getGetSalesReceiptsTableOutData());
        }
        this.observableTableList = FXCollections.observableArrayList(salesReceiptsTableOutDataList);
        this.tableView.setItems(this.observableTableList);
        this.tableView.refresh();
        this.tableView.getSelectionModel().select(0);
    }

    public void cancelSaleAction() {
        this.observableTableList = FXCollections.observableArrayList(new ArrayList());
        this.tableView.getItems().clear();
        this.tableView.refresh();
        this.observableSamllTableList = FXCollections.observableArrayList(new ArrayList());
        this.smallTableView.getItems().clear();
        this.smallTableView.refresh();
        this.caseId.setText("");
        this.cardNum.setText("");
        this.name.setText("");
        this.phone.setText("");
        this.dis.setText("");
        this.type.setText("");
        this.point.setText("");
        CacheUtil.remove("memberOutData");
        this.totalMoney.setText("0.00");
        this.inputTextField.clear();
        this.proSpecsF.setText("");
        this.proPlaceF.setText("");
        this.gssbBatchNoF.setText("");
        this.gssbVaildDateF.setText("");
        this.empF.setText("");
        this.doctorF.setText("");
        this.proIfPartF.setText("");
        this.proMedProdctF.setText("");
        this.gsplSeatF.setText("");
        this.gssbQtyF.setText("");
        this.proUsage.setText("");
        this.proContraindication.setText("");
        this.numTextField.textProperty().removeListener(this.changeListener);
        this.numTextField.setText("");
        this.caseId.setText("");
        this.init();
    }

    public boolean cancelOneProAction(String index) {
        if (this.tableView.getItems().size() < Integer.valueOf(index)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u5e8f\u53f7\u8d85\u51fa\u6700\u5927\u503c");
            alert.showAndWait();
            return false;
        }
        if (this.tableView.getItems().size() == 1) {
            this.cancelSaleAction();
            return true;
        }
        int indexInt = Integer.valueOf(index) - 1;
        GetSalesReceiptsTableOutData deletData = (GetSalesReceiptsTableOutData)this.tableView.getItems().get(indexInt);
        GetPromByProCodeOutData promByProCodeOutDataList = deletData.getSelectPromByProCodeOutData();
        if (ObjectUtil.isNotEmpty(promByProCodeOutDataList) && "PROM_COMBIN".equals(promByProCodeOutDataList.getPromotionTypeId())) {
            CommonUtil.showView(PromCombinView.class, Modality.APPLICATION_MODAL);
            return false;
        }
        this.tableView.getItems().remove(indexInt);
        for (int i = 0; i < this.tableView.getItems().size(); ++i) {
            ((GetSalesReceiptsTableOutData)this.tableView.getItems().get(i)).setIndex(String.valueOf(i + 1));
        }
        if (this.tableView.getItems().size() == 0) {
            this.caseId.setText("");
            CacheUtil.remove("memberOutData");
        }
        this.tableView.refresh();
        this.countMoney();
        return true;
    }

    public ScrollPane getScrollPane() {
        return this.scrollPane;
    }

    public TableView<GetSalesReceiptsTableOutData> getTableView() {
        return this.tableView;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getProCode() {
        return this.proCode;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getNum() {
        return this.num;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getIndex() {
        return this.index;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getTotal() {
        return this.total;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getPrice() {
        return this.price;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getProUnit() {
        return this.proUnit;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getPrcAmount() {
        return this.prcAmount;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getDisc() {
        return this.disc;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getProName() {
        return this.proName;
    }

    public TableColumn<GetSalesReceiptsTableOutData, String> getStatus() {
        return this.status;
    }

    public Label getCaseId() {
        return this.caseId;
    }

    public Label getWorkUserId() {
        return this.workUserId;
    }

    public Label getTotalMoney() {
        return this.totalMoney;
    }

    public Label getDate() {
        return this.date;
    }

    public Label getShopName() {
        return this.shopName;
    }

    public Label getTime() {
        return this.time;
    }

    public Pane getModelPane() {
        return this.modelPane;
    }

    public Pane getKeytoolPane() {
        return this.keytoolPane;
    }

    public Pane getFastPane() {
        return this.fastPane;
    }

    public Label getCardNum() {
        return this.cardNum;
    }

    public Label getPhone() {
        return this.phone;
    }

    public Label getName() {
        return this.name;
    }

    public Label getType() {
        return this.type;
    }

    public Label getPoint() {
        return this.point;
    }

    public Label getDis() {
        return this.dis;
    }

    public TextField getNumTextField() {
        return this.numTextField;
    }

    public TextField getInputTextField() {
        return this.inputTextField;
    }

    public Label getProPlaceF() {
        return this.proPlaceF;
    }

    public Label getGssbBatchNoF() {
        return this.gssbBatchNoF;
    }

    public Label getGssbVaildDateF() {
        return this.gssbVaildDateF;
    }

    public Label getGssbQtyF() {
        return this.gssbQtyF;
    }

    public Label getProSpecsF() {
        return this.proSpecsF;
    }

    public Label getGsplSeatF() {
        return this.gsplSeatF;
    }

    public Label getProIfPartF() {
        return this.proIfPartF;
    }

    public Label getProMedProdctF() {
        return this.proMedProdctF;
    }

    public Label getEmpF() {
        return this.empF;
    }

    public Label getDoctorF() {
        return this.doctorF;
    }

    public Label getProUsage() {
        return this.proUsage;
    }

    public Label getProContraindication() {
        return this.proContraindication;
    }

    public TableColumn<GetPromByProCodeOutData, String> getPromotionName() {
        return this.promotionName;
    }

    public TableColumn<GetPromByProCodeOutData, String> getPromotionType() {
        return this.promotionType;
    }

    public TableColumn<GetPromByProCodeOutData, String> getPromotionContent() {
        return this.promotionContent;
    }

    public TableColumn<GetPromByProCodeOutData, String> getButton() {
        return this.button;
    }

    public TableView<GetPromByProCodeOutData> getSmallTableView() {
        return this.smallTableView;
    }

    public Text getZysy() {
        return this.zysy;
    }

    public IndexController getIndexController() {
        return this.indexController;
    }

    public QueryMemberController getQueryMemberController() {
        return this.queryMemberController;
    }

    public ZysyController getZysyController() {
        return this.zysyController;
    }

    public ZysyLogOutController getZysyLogOutController() {
        return this.zysyLogOutController;
    }

    public SpliteProController getSpliteProController() {
        return this.spliteProController;
    }

    public ChangeDutyController getChangeDutyController() {
        return this.changeDutyController;
    }

    public ChangeDutyTipController getChangeDutyTipController() {
        return this.changeDutyTipController;
    }

    public RePrintBillController getRePrintBillController() {
        return this.rePrintBillController;
    }

    public KeyTipController getKeyTipController() {
        return this.keyTipController;
    }

    public ProductQueryController getProductQueryController() {
        return this.productQueryController;
    }

    public CashierDutyController getCashierDutyController() {
        return this.cashierDutyController;
    }

    public PdAndExpController getPdAndExpController() {
        return this.pdAndExpController;
    }

    public EmpController getEmpController() {
        return this.empController;
    }

    public DoctorController getDoctorController() {
        return this.doctorController;
    }

    public RecipelInfoInputController getRecipelInfoInputController() {
        return this.recipelInfoInputController;
    }

    public GetRestOrderController getGetRestOrderController() {
        return this.getRestOrderController;
    }

    public RecipelDrugsController getRecipelDrugsController() {
        return this.recipelDrugsController;
    }

    public SpecialDrugsController getSpecialDrugsController() {
        return this.specialDrugsController;
    }

    public ServerController getServerController() {
        return this.serverController;
    }

    public GiftController getGiftController() {
        return this.giftController;
    }

    public CancelOneController getCancelOneController() {
        return this.cancelOneController;
    }

    public TieNumController getTieNumController() {
        return this.tieNumController;
    }

    public SaleActSelectController getSaleActSelectController() {
        return this.saleActSelectController;
    }

    public SingleChangePriceController getSingleChangePriceController() {
        return this.singleChangePriceController;
    }

    public SingleChangeRateController getSingleChangeRateController() {
        return this.singleChangeRateController;
    }

    public AllChangeRateController getAllChangeRateController() {
        return this.allChangeRateController;
    }

    public RestOrderController getRestOrderController() {
        return this.restOrderController;
    }

    public ReplaceSaleController getReplaceSaleController() {
        return this.replaceSaleController;
    }

    public SelectRecipelDrugsController getSelectRecipelDrugsController() {
        return this.selectRecipelDrugsController;
    }

    public GiftCardController getGiftCardController() {
        return this.giftCardController;
    }

    public PayController getPayController() {
        return this.payController;
    }

    public SpliteProTipController getSpliteProTipController() {
        return this.spliteProTipController;
    }

    public List<GetQueryProductOutData> getQueryProductOutData() {
        return this.queryProductOutData;
    }

    public ObservableList<GetSalesReceiptsTableOutData> getObservableTableList() {
        return this.observableTableList;
    }

    public ObservableList<GetPromByProCodeOutData> getObservableSamllTableList() {
        return this.observableSamllTableList;
    }

    public boolean isSelectFlag() {
        return this.selectFlag;
    }

    public GetQueryProductOutData getProduct() {
        return this.product;
    }

    public boolean isNumInFlag() {
        return this.numInFlag;
    }

    public ChangeListener getChangeListener() {
        return this.changeListener;
    }

    public List<GetSalesReceiptsTableOutData> getSpecialDrugList() {
        return this.specialDrugList;
    }

    public List<GetSalesReceiptsTableOutData> getRecipelDrugList() {
        return this.recipelDrugList;
    }

    public Boolean getCreateSaleFlag() {
        return this.createSaleFlag;
    }

    public String getPriceString() {
        return this.priceString;
    }

    public String getLsPriceString() {
        return this.lsPriceString;
    }

    public String getIndexString() {
        return this.indexString;
    }

    public String getProCodeString() {
        return this.proCodeString;
    }

    public String getTypeId() {
        return this.typeId;
    }

    public String getDeptId() {
        return this.deptId;
    }

    public String getReplaceUserId() {
        return this.replaceUserId;
    }

    public Boolean getInputFlag() {
        return this.inputFlag;
    }

    public GaiaSdIntegralAddSet getGaiaSdIntegralAddSet() {
        return this.gaiaSdIntegralAddSet;
    }

    public GaiaSdMemberClass getGaiaSdMemberClass() {
        return this.gaiaSdMemberClass;
    }

    public Pane getMemberPane() {
        return this.memberPane;
    }

    public GridPane getMemberG1() {
        return this.memberG1;
    }

    public GridPane getMemberG2() {
        return this.memberG2;
    }

    public GridPane getProF1Grid() {
        return this.proF1Grid;
    }

    public GridPane getProF2Grid() {
        return this.proF2Grid;
    }

    public GridPane getUseGrid1() {
        return this.useGrid1;
    }

    public GridPane getUseGrid2() {
        return this.useGrid2;
    }

    public Label getCaseIdLabel() {
        return this.caseIdLabel;
    }

    public Label getWorkUserIdLabel() {
        return this.workUserIdLabel;
    }

    public Label getSaleLabel() {
        return this.saleLabel;
    }

    public Label getNumLabel() {
        return this.numLabel;
    }

    public Label getInputLabel() {
        return this.inputLabel;
    }

    public Pane getMoneyTotalPane() {
        return this.moneyTotalPane;
    }

    public Pane getProPane() {
        return this.proPane;
    }

    public Pane getQuickKeyPane() {
        return this.quickKeyPane;
    }

    public ImageView getImageView() {
        return this.imageView;
    }

    public Button getQuickBut1() {
        return this.quickBut1;
    }

    public Button getQuickBut2() {
        return this.quickBut2;
    }

    public Pane getModel1() {
        return this.model1;
    }

    public Pane getModel2() {
        return this.model2;
    }

    public VBox getVbox() {
        return this.vbox;
    }

    public Pane getInputModel() {
        return this.inputModel;
    }

    public Pane getPane() {
        return this.pane;
    }

    public OfflineController getOfflineController() {
        return this.offlineController;
    }

    public CancelSaleController getCancelSaleController() {
        return this.cancelSaleController;
    }

    public void setScrollPane(ScrollPane scrollPane) {
        this.scrollPane = scrollPane;
    }

    public void setTableView(TableView<GetSalesReceiptsTableOutData> tableView) {
        this.tableView = tableView;
    }

    public void setProCode(TableColumn<GetSalesReceiptsTableOutData, String> proCode) {
        this.proCode = proCode;
    }

    public void setNum(TableColumn<GetSalesReceiptsTableOutData, String> num) {
        this.num = num;
    }

    public void setIndex(TableColumn<GetSalesReceiptsTableOutData, String> index) {
        this.index = index;
    }

    public void setTotal(TableColumn<GetSalesReceiptsTableOutData, String> total) {
        this.total = total;
    }

    public void setPrice(TableColumn<GetSalesReceiptsTableOutData, String> price) {
        this.price = price;
    }

    public void setProUnit(TableColumn<GetSalesReceiptsTableOutData, String> proUnit) {
        this.proUnit = proUnit;
    }

    public void setPrcAmount(TableColumn<GetSalesReceiptsTableOutData, String> prcAmount) {
        this.prcAmount = prcAmount;
    }

    public void setDisc(TableColumn<GetSalesReceiptsTableOutData, String> disc) {
        this.disc = disc;
    }

    public void setProName(TableColumn<GetSalesReceiptsTableOutData, String> proName) {
        this.proName = proName;
    }

    public void setStatus(TableColumn<GetSalesReceiptsTableOutData, String> status) {
        this.status = status;
    }

    public void setCaseId(Label caseId) {
        this.caseId = caseId;
    }

    public void setWorkUserId(Label workUserId) {
        this.workUserId = workUserId;
    }

    public void setTotalMoney(Label totalMoney) {
        this.totalMoney = totalMoney;
    }

    public void setDate(Label date) {
        this.date = date;
    }

    public void setShopName(Label shopName) {
        this.shopName = shopName;
    }

    public void setTime(Label time) {
        this.time = time;
    }

    public void setModelPane(Pane modelPane) {
        this.modelPane = modelPane;
    }

    public void setKeytoolPane(Pane keytoolPane) {
        this.keytoolPane = keytoolPane;
    }

    public void setFastPane(Pane fastPane) {
        this.fastPane = fastPane;
    }

    public void setCardNum(Label cardNum) {
        this.cardNum = cardNum;
    }

    public void setPhone(Label phone) {
        this.phone = phone;
    }

    public void setName(Label name) {
        this.name = name;
    }

    public void setType(Label type) {
        this.type = type;
    }

    public void setPoint(Label point) {
        this.point = point;
    }

    public void setDis(Label dis) {
        this.dis = dis;
    }

    public void setNumTextField(TextField numTextField) {
        this.numTextField = numTextField;
    }

    public void setInputTextField(TextField inputTextField) {
        this.inputTextField = inputTextField;
    }

    public void setProPlaceF(Label proPlaceF) {
        this.proPlaceF = proPlaceF;
    }

    public void setGssbBatchNoF(Label gssbBatchNoF) {
        this.gssbBatchNoF = gssbBatchNoF;
    }

    public void setGssbVaildDateF(Label gssbVaildDateF) {
        this.gssbVaildDateF = gssbVaildDateF;
    }

    public void setGssbQtyF(Label gssbQtyF) {
        this.gssbQtyF = gssbQtyF;
    }

    public void setProSpecsF(Label proSpecsF) {
        this.proSpecsF = proSpecsF;
    }

    public void setGsplSeatF(Label gsplSeatF) {
        this.gsplSeatF = gsplSeatF;
    }

    public void setProIfPartF(Label proIfPartF) {
        this.proIfPartF = proIfPartF;
    }

    public void setProMedProdctF(Label proMedProdctF) {
        this.proMedProdctF = proMedProdctF;
    }

    public void setEmpF(Label empF) {
        this.empF = empF;
    }

    public void setDoctorF(Label doctorF) {
        this.doctorF = doctorF;
    }

    public void setProUsage(Label proUsage) {
        this.proUsage = proUsage;
    }

    public void setProContraindication(Label proContraindication) {
        this.proContraindication = proContraindication;
    }

    public void setPromotionName(TableColumn<GetPromByProCodeOutData, String> promotionName) {
        this.promotionName = promotionName;
    }

    public void setPromotionType(TableColumn<GetPromByProCodeOutData, String> promotionType) {
        this.promotionType = promotionType;
    }

    public void setPromotionContent(TableColumn<GetPromByProCodeOutData, String> promotionContent) {
        this.promotionContent = promotionContent;
    }

    public void setButton(TableColumn<GetPromByProCodeOutData, String> button) {
        this.button = button;
    }

    public void setSmallTableView(TableView<GetPromByProCodeOutData> smallTableView) {
        this.smallTableView = smallTableView;
    }

    public void setZysy(Text zysy) {
        this.zysy = zysy;
    }

    public void setIndexController(IndexController indexController) {
        this.indexController = indexController;
    }

    public void setQueryMemberController(QueryMemberController queryMemberController) {
        this.queryMemberController = queryMemberController;
    }

    public void setZysyController(ZysyController zysyController) {
        this.zysyController = zysyController;
    }

    public void setZysyLogOutController(ZysyLogOutController zysyLogOutController) {
        this.zysyLogOutController = zysyLogOutController;
    }

    public void setSpliteProController(SpliteProController spliteProController) {
        this.spliteProController = spliteProController;
    }

    public void setChangeDutyController(ChangeDutyController changeDutyController) {
        this.changeDutyController = changeDutyController;
    }

    public void setChangeDutyTipController(ChangeDutyTipController changeDutyTipController) {
        this.changeDutyTipController = changeDutyTipController;
    }

    public void setRePrintBillController(RePrintBillController rePrintBillController) {
        this.rePrintBillController = rePrintBillController;
    }

    public void setKeyTipController(KeyTipController keyTipController) {
        this.keyTipController = keyTipController;
    }

    public void setProductQueryController(ProductQueryController productQueryController) {
        this.productQueryController = productQueryController;
    }

    public void setCashierDutyController(CashierDutyController cashierDutyController) {
        this.cashierDutyController = cashierDutyController;
    }

    public void setPdAndExpController(PdAndExpController pdAndExpController) {
        this.pdAndExpController = pdAndExpController;
    }

    public void setEmpController(EmpController empController) {
        this.empController = empController;
    }

    public void setDoctorController(DoctorController doctorController) {
        this.doctorController = doctorController;
    }

    public void setRecipelInfoInputController(RecipelInfoInputController recipelInfoInputController) {
        this.recipelInfoInputController = recipelInfoInputController;
    }

    public void setGetRestOrderController(GetRestOrderController getRestOrderController) {
        this.getRestOrderController = getRestOrderController;
    }

    public void setRecipelDrugsController(RecipelDrugsController recipelDrugsController) {
        this.recipelDrugsController = recipelDrugsController;
    }

    public void setSpecialDrugsController(SpecialDrugsController specialDrugsController) {
        this.specialDrugsController = specialDrugsController;
    }

    public void setServerController(ServerController serverController) {
        this.serverController = serverController;
    }

    public void setGiftController(GiftController giftController) {
        this.giftController = giftController;
    }

    public void setCancelOneController(CancelOneController cancelOneController) {
        this.cancelOneController = cancelOneController;
    }

    public void setTieNumController(TieNumController tieNumController) {
        this.tieNumController = tieNumController;
    }

    public void setSaleActSelectController(SaleActSelectController saleActSelectController) {
        this.saleActSelectController = saleActSelectController;
    }

    public void setSingleChangePriceController(SingleChangePriceController singleChangePriceController) {
        this.singleChangePriceController = singleChangePriceController;
    }

    public void setSingleChangeRateController(SingleChangeRateController singleChangeRateController) {
        this.singleChangeRateController = singleChangeRateController;
    }

    public void setAllChangeRateController(AllChangeRateController allChangeRateController) {
        this.allChangeRateController = allChangeRateController;
    }

    public void setRestOrderController(RestOrderController restOrderController) {
        this.restOrderController = restOrderController;
    }

    public void setReplaceSaleController(ReplaceSaleController replaceSaleController) {
        this.replaceSaleController = replaceSaleController;
    }

    public void setSelectRecipelDrugsController(SelectRecipelDrugsController selectRecipelDrugsController) {
        this.selectRecipelDrugsController = selectRecipelDrugsController;
    }

    public void setGiftCardController(GiftCardController giftCardController) {
        this.giftCardController = giftCardController;
    }

    public void setPayController(PayController payController) {
        this.payController = payController;
    }

    public void setSpliteProTipController(SpliteProTipController spliteProTipController) {
        this.spliteProTipController = spliteProTipController;
    }

    public void setQueryProductOutData(List<GetQueryProductOutData> queryProductOutData) {
        this.queryProductOutData = queryProductOutData;
    }

    public void setObservableTableList(ObservableList<GetSalesReceiptsTableOutData> observableTableList) {
        this.observableTableList = observableTableList;
    }

    public void setObservableSamllTableList(ObservableList<GetPromByProCodeOutData> observableSamllTableList) {
        this.observableSamllTableList = observableSamllTableList;
    }

    public void setSelectFlag(boolean selectFlag) {
        this.selectFlag = selectFlag;
    }

    public void setProduct(GetQueryProductOutData product) {
        this.product = product;
    }

    public void setNumInFlag(boolean numInFlag) {
        this.numInFlag = numInFlag;
    }

    public void setChangeListener(ChangeListener changeListener) {
        this.changeListener = changeListener;
    }

    public void setSpecialDrugList(List<GetSalesReceiptsTableOutData> specialDrugList) {
        this.specialDrugList = specialDrugList;
    }

    public void setRecipelDrugList(List<GetSalesReceiptsTableOutData> recipelDrugList) {
        this.recipelDrugList = recipelDrugList;
    }

    public void setCreateSaleFlag(Boolean createSaleFlag) {
        this.createSaleFlag = createSaleFlag;
    }

    public void setPriceString(String priceString) {
        this.priceString = priceString;
    }

    public void setLsPriceString(String lsPriceString) {
        this.lsPriceString = lsPriceString;
    }

    public void setIndexString(String indexString) {
        this.indexString = indexString;
    }

    public void setProCodeString(String proCodeString) {
        this.proCodeString = proCodeString;
    }

    public void setTypeId(String typeId) {
        this.typeId = typeId;
    }

    public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

    public void setReplaceUserId(String replaceUserId) {
        this.replaceUserId = replaceUserId;
    }

    public void setInputFlag(Boolean inputFlag) {
        this.inputFlag = inputFlag;
    }

    public void setGaiaSdIntegralAddSet(GaiaSdIntegralAddSet gaiaSdIntegralAddSet) {
        this.gaiaSdIntegralAddSet = gaiaSdIntegralAddSet;
    }

    public void setGaiaSdMemberClass(GaiaSdMemberClass gaiaSdMemberClass) {
        this.gaiaSdMemberClass = gaiaSdMemberClass;
    }

    public void setMemberPane(Pane memberPane) {
        this.memberPane = memberPane;
    }

    public void setMemberG1(GridPane memberG1) {
        this.memberG1 = memberG1;
    }

    public void setMemberG2(GridPane memberG2) {
        this.memberG2 = memberG2;
    }

    public void setProF1Grid(GridPane proF1Grid) {
        this.proF1Grid = proF1Grid;
    }

    public void setProF2Grid(GridPane proF2Grid) {
        this.proF2Grid = proF2Grid;
    }

    public void setUseGrid1(GridPane useGrid1) {
        this.useGrid1 = useGrid1;
    }

    public void setUseGrid2(GridPane useGrid2) {
        this.useGrid2 = useGrid2;
    }

    public void setCaseIdLabel(Label caseIdLabel) {
        this.caseIdLabel = caseIdLabel;
    }

    public void setWorkUserIdLabel(Label workUserIdLabel) {
        this.workUserIdLabel = workUserIdLabel;
    }

    public void setSaleLabel(Label saleLabel) {
        this.saleLabel = saleLabel;
    }

    public void setNumLabel(Label numLabel) {
        this.numLabel = numLabel;
    }

    public void setInputLabel(Label inputLabel) {
        this.inputLabel = inputLabel;
    }

    public void setMoneyTotalPane(Pane moneyTotalPane) {
        this.moneyTotalPane = moneyTotalPane;
    }

    public void setProPane(Pane proPane) {
        this.proPane = proPane;
    }

    public void setQuickKeyPane(Pane quickKeyPane) {
        this.quickKeyPane = quickKeyPane;
    }

    public void setImageView(ImageView imageView) {
        this.imageView = imageView;
    }

    public void setQuickBut1(Button quickBut1) {
        this.quickBut1 = quickBut1;
    }

    public void setQuickBut2(Button quickBut2) {
        this.quickBut2 = quickBut2;
    }

    public void setModel1(Pane model1) {
        this.model1 = model1;
    }

    public void setModel2(Pane model2) {
        this.model2 = model2;
    }

    public void setVbox(VBox vbox) {
        this.vbox = vbox;
    }

    public void setInputModel(Pane inputModel) {
        this.inputModel = inputModel;
    }

    public void setPane(Pane pane) {
        this.pane = pane;
    }

    public void setOfflineController(OfflineController offlineController) {
        this.offlineController = offlineController;
    }

    public void setCancelSaleController(CancelSaleController cancelSaleController) {
        this.cancelSaleController = cancelSaleController;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof SalesReceiptsMainController)) {
            return false;
        }
        SalesReceiptsMainController other = (SalesReceiptsMainController)o;
        if (!other.canEqual(this)) {
            return false;
        }
        ScrollPane this$scrollPane = this.getScrollPane();
        ScrollPane other$scrollPane = other.getScrollPane();
        if (this$scrollPane == null ? other$scrollPane != null : !this$scrollPane.equals(other$scrollPane)) {
            return false;
        }
        TableView<GetSalesReceiptsTableOutData> this$tableView = this.getTableView();
        TableView<GetSalesReceiptsTableOutData> other$tableView = other.getTableView();
        if (this$tableView == null ? other$tableView != null : !this$tableView.equals(other$tableView)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$proCode = this.getProCode();
        TableColumn<GetSalesReceiptsTableOutData, String> other$proCode = other.getProCode();
        if (this$proCode == null ? other$proCode != null : !this$proCode.equals(other$proCode)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$num = this.getNum();
        TableColumn<GetSalesReceiptsTableOutData, String> other$num = other.getNum();
        if (this$num == null ? other$num != null : !this$num.equals(other$num)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$index = this.getIndex();
        TableColumn<GetSalesReceiptsTableOutData, String> other$index = other.getIndex();
        if (this$index == null ? other$index != null : !this$index.equals(other$index)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$total = this.getTotal();
        TableColumn<GetSalesReceiptsTableOutData, String> other$total = other.getTotal();
        if (this$total == null ? other$total != null : !this$total.equals(other$total)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$price = this.getPrice();
        TableColumn<GetSalesReceiptsTableOutData, String> other$price = other.getPrice();
        if (this$price == null ? other$price != null : !this$price.equals(other$price)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$proUnit = this.getProUnit();
        TableColumn<GetSalesReceiptsTableOutData, String> other$proUnit = other.getProUnit();
        if (this$proUnit == null ? other$proUnit != null : !this$proUnit.equals(other$proUnit)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$prcAmount = this.getPrcAmount();
        TableColumn<GetSalesReceiptsTableOutData, String> other$prcAmount = other.getPrcAmount();
        if (this$prcAmount == null ? other$prcAmount != null : !this$prcAmount.equals(other$prcAmount)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$disc = this.getDisc();
        TableColumn<GetSalesReceiptsTableOutData, String> other$disc = other.getDisc();
        if (this$disc == null ? other$disc != null : !this$disc.equals(other$disc)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$proName = this.getProName();
        TableColumn<GetSalesReceiptsTableOutData, String> other$proName = other.getProName();
        if (this$proName == null ? other$proName != null : !this$proName.equals(other$proName)) {
            return false;
        }
        TableColumn<GetSalesReceiptsTableOutData, String> this$status = this.getStatus();
        TableColumn<GetSalesReceiptsTableOutData, String> other$status = other.getStatus();
        if (this$status == null ? other$status != null : !this$status.equals(other$status)) {
            return false;
        }
        Label this$caseId = this.getCaseId();
        Label other$caseId = other.getCaseId();
        if (this$caseId == null ? other$caseId != null : !this$caseId.equals(other$caseId)) {
            return false;
        }
        Label this$workUserId = this.getWorkUserId();
        Label other$workUserId = other.getWorkUserId();
        if (this$workUserId == null ? other$workUserId != null : !this$workUserId.equals(other$workUserId)) {
            return false;
        }
        Label this$totalMoney = this.getTotalMoney();
        Label other$totalMoney = other.getTotalMoney();
        if (this$totalMoney == null ? other$totalMoney != null : !this$totalMoney.equals(other$totalMoney)) {
            return false;
        }
        Label this$date = this.getDate();
        Label other$date = other.getDate();
        if (this$date == null ? other$date != null : !this$date.equals(other$date)) {
            return false;
        }
        Label this$shopName = this.getShopName();
        Label other$shopName = other.getShopName();
        if (this$shopName == null ? other$shopName != null : !this$shopName.equals(other$shopName)) {
            return false;
        }
        Label this$time = this.getTime();
        Label other$time = other.getTime();
        if (this$time == null ? other$time != null : !this$time.equals(other$time)) {
            return false;
        }
        Pane this$modelPane = this.getModelPane();
        Pane other$modelPane = other.getModelPane();
        if (this$modelPane == null ? other$modelPane != null : !this$modelPane.equals(other$modelPane)) {
            return false;
        }
        Pane this$keytoolPane = this.getKeytoolPane();
        Pane other$keytoolPane = other.getKeytoolPane();
        if (this$keytoolPane == null ? other$keytoolPane != null : !this$keytoolPane.equals(other$keytoolPane)) {
            return false;
        }
        Pane this$fastPane = this.getFastPane();
        Pane other$fastPane = other.getFastPane();
        if (this$fastPane == null ? other$fastPane != null : !this$fastPane.equals(other$fastPane)) {
            return false;
        }
        Label this$cardNum = this.getCardNum();
        Label other$cardNum = other.getCardNum();
        if (this$cardNum == null ? other$cardNum != null : !this$cardNum.equals(other$cardNum)) {
            return false;
        }
        Label this$phone = this.getPhone();
        Label other$phone = other.getPhone();
        if (this$phone == null ? other$phone != null : !this$phone.equals(other$phone)) {
            return false;
        }
        Label this$name = this.getName();
        Label other$name = other.getName();
        if (this$name == null ? other$name != null : !this$name.equals(other$name)) {
            return false;
        }
        Label this$type = this.getType();
        Label other$type = other.getType();
        if (this$type == null ? other$type != null : !this$type.equals(other$type)) {
            return false;
        }
        Label this$point = this.getPoint();
        Label other$point = other.getPoint();
        if (this$point == null ? other$point != null : !this$point.equals(other$point)) {
            return false;
        }
        Label this$dis = this.getDis();
        Label other$dis = other.getDis();
        if (this$dis == null ? other$dis != null : !this$dis.equals(other$dis)) {
            return false;
        }
        TextField this$numTextField = this.getNumTextField();
        TextField other$numTextField = other.getNumTextField();
        if (this$numTextField == null ? other$numTextField != null : !this$numTextField.equals(other$numTextField)) {
            return false;
        }
        TextField this$inputTextField = this.getInputTextField();
        TextField other$inputTextField = other.getInputTextField();
        if (this$inputTextField == null ? other$inputTextField != null : !this$inputTextField.equals(other$inputTextField)) {
            return false;
        }
        Label this$proPlaceF = this.getProPlaceF();
        Label other$proPlaceF = other.getProPlaceF();
        if (this$proPlaceF == null ? other$proPlaceF != null : !this$proPlaceF.equals(other$proPlaceF)) {
            return false;
        }
        Label this$gssbBatchNoF = this.getGssbBatchNoF();
        Label other$gssbBatchNoF = other.getGssbBatchNoF();
        if (this$gssbBatchNoF == null ? other$gssbBatchNoF != null : !this$gssbBatchNoF.equals(other$gssbBatchNoF)) {
            return false;
        }
        Label this$gssbVaildDateF = this.getGssbVaildDateF();
        Label other$gssbVaildDateF = other.getGssbVaildDateF();
        if (this$gssbVaildDateF == null ? other$gssbVaildDateF != null : !this$gssbVaildDateF.equals(other$gssbVaildDateF)) {
            return false;
        }
        Label this$gssbQtyF = this.getGssbQtyF();
        Label other$gssbQtyF = other.getGssbQtyF();
        if (this$gssbQtyF == null ? other$gssbQtyF != null : !this$gssbQtyF.equals(other$gssbQtyF)) {
            return false;
        }
        Label this$proSpecsF = this.getProSpecsF();
        Label other$proSpecsF = other.getProSpecsF();
        if (this$proSpecsF == null ? other$proSpecsF != null : !this$proSpecsF.equals(other$proSpecsF)) {
            return false;
        }
        Label this$gsplSeatF = this.getGsplSeatF();
        Label other$gsplSeatF = other.getGsplSeatF();
        if (this$gsplSeatF == null ? other$gsplSeatF != null : !this$gsplSeatF.equals(other$gsplSeatF)) {
            return false;
        }
        Label this$proIfPartF = this.getProIfPartF();
        Label other$proIfPartF = other.getProIfPartF();
        if (this$proIfPartF == null ? other$proIfPartF != null : !this$proIfPartF.equals(other$proIfPartF)) {
            return false;
        }
        Label this$proMedProdctF = this.getProMedProdctF();
        Label other$proMedProdctF = other.getProMedProdctF();
        if (this$proMedProdctF == null ? other$proMedProdctF != null : !this$proMedProdctF.equals(other$proMedProdctF)) {
            return false;
        }
        Label this$empF = this.getEmpF();
        Label other$empF = other.getEmpF();
        if (this$empF == null ? other$empF != null : !this$empF.equals(other$empF)) {
            return false;
        }
        Label this$doctorF = this.getDoctorF();
        Label other$doctorF = other.getDoctorF();
        if (this$doctorF == null ? other$doctorF != null : !this$doctorF.equals(other$doctorF)) {
            return false;
        }
        Label this$proUsage = this.getProUsage();
        Label other$proUsage = other.getProUsage();
        if (this$proUsage == null ? other$proUsage != null : !this$proUsage.equals(other$proUsage)) {
            return false;
        }
        Label this$proContraindication = this.getProContraindication();
        Label other$proContraindication = other.getProContraindication();
        if (this$proContraindication == null ? other$proContraindication != null : !this$proContraindication.equals(other$proContraindication)) {
            return false;
        }
        TableColumn<GetPromByProCodeOutData, String> this$promotionName = this.getPromotionName();
        TableColumn<GetPromByProCodeOutData, String> other$promotionName = other.getPromotionName();
        if (this$promotionName == null ? other$promotionName != null : !this$promotionName.equals(other$promotionName)) {
            return false;
        }
        TableColumn<GetPromByProCodeOutData, String> this$promotionType = this.getPromotionType();
        TableColumn<GetPromByProCodeOutData, String> other$promotionType = other.getPromotionType();
        if (this$promotionType == null ? other$promotionType != null : !this$promotionType.equals(other$promotionType)) {
            return false;
        }
        TableColumn<GetPromByProCodeOutData, String> this$promotionContent = this.getPromotionContent();
        TableColumn<GetPromByProCodeOutData, String> other$promotionContent = other.getPromotionContent();
        if (this$promotionContent == null ? other$promotionContent != null : !this$promotionContent.equals(other$promotionContent)) {
            return false;
        }
        TableColumn<GetPromByProCodeOutData, String> this$button = this.getButton();
        TableColumn<GetPromByProCodeOutData, String> other$button = other.getButton();
        if (this$button == null ? other$button != null : !this$button.equals(other$button)) {
            return false;
        }
        TableView<GetPromByProCodeOutData> this$smallTableView = this.getSmallTableView();
        TableView<GetPromByProCodeOutData> other$smallTableView = other.getSmallTableView();
        if (this$smallTableView == null ? other$smallTableView != null : !this$smallTableView.equals(other$smallTableView)) {
            return false;
        }
        Text this$zysy = this.getZysy();
        Text other$zysy = other.getZysy();
        if (this$zysy == null ? other$zysy != null : !this$zysy.equals(other$zysy)) {
            return false;
        }
        IndexController this$indexController = this.getIndexController();
        IndexController other$indexController = other.getIndexController();
        if (this$indexController == null ? other$indexController != null : !(this$indexController).equals(other$indexController)) {
            return false;
        }
        QueryMemberController this$queryMemberController = this.getQueryMemberController();
        QueryMemberController other$queryMemberController = other.getQueryMemberController();
        if (this$queryMemberController == null ? other$queryMemberController != null : !this$queryMemberController.equals(other$queryMemberController)) {
            return false;
        }
        ZysyController this$zysyController = this.getZysyController();
        ZysyController other$zysyController = other.getZysyController();
        if (this$zysyController == null ? other$zysyController != null : !this$zysyController.equals(other$zysyController)) {
            return false;
        }
        ZysyLogOutController this$zysyLogOutController = this.getZysyLogOutController();
        ZysyLogOutController other$zysyLogOutController = other.getZysyLogOutController();
        if (this$zysyLogOutController == null ? other$zysyLogOutController != null : !this$zysyLogOutController.equals(other$zysyLogOutController)) {
            return false;
        }
        SpliteProController this$spliteProController = this.getSpliteProController();
        SpliteProController other$spliteProController = other.getSpliteProController();
        if (this$spliteProController == null ? other$spliteProController != null : !(this$spliteProController).equals(other$spliteProController)) {
            return false;
        }
        ChangeDutyController this$changeDutyController = this.getChangeDutyController();
        ChangeDutyController other$changeDutyController = other.getChangeDutyController();
        if (this$changeDutyController == null ? other$changeDutyController != null : !this$changeDutyController.equals(other$changeDutyController)) {
            return false;
        }
        ChangeDutyTipController this$changeDutyTipController = this.getChangeDutyTipController();
        ChangeDutyTipController other$changeDutyTipController = other.getChangeDutyTipController();
        if (this$changeDutyTipController == null ? other$changeDutyTipController != null : !this$changeDutyTipController.equals(other$changeDutyTipController)) {
            return false;
        }
        RePrintBillController this$rePrintBillController = this.getRePrintBillController();
        RePrintBillController other$rePrintBillController = other.getRePrintBillController();
        if (this$rePrintBillController == null ? other$rePrintBillController != null : !this$rePrintBillController.equals(other$rePrintBillController)) {
            return false;
        }
        KeyTipController this$keyTipController = this.getKeyTipController();
        KeyTipController other$keyTipController = other.getKeyTipController();
        if (this$keyTipController == null ? other$keyTipController != null : !(this$keyTipController).equals(other$keyTipController)) {
            return false;
        }
        ProductQueryController this$productQueryController = this.getProductQueryController();
        ProductQueryController other$productQueryController = other.getProductQueryController();
        if (this$productQueryController == null ? other$productQueryController != null : !(this$productQueryController).equals(other$productQueryController)) {
            return false;
        }
        CashierDutyController this$cashierDutyController = this.getCashierDutyController();
        CashierDutyController other$cashierDutyController = other.getCashierDutyController();
        if (this$cashierDutyController == null ? other$cashierDutyController != null : !this$cashierDutyController.equals(other$cashierDutyController)) {
            return false;
        }
        PdAndExpController this$pdAndExpController = this.getPdAndExpController();
        PdAndExpController other$pdAndExpController = other.getPdAndExpController();
        if (this$pdAndExpController == null ? other$pdAndExpController != null : !(this$pdAndExpController).equals(other$pdAndExpController)) {
            return false;
        }
        EmpController this$empController = this.getEmpController();
        EmpController other$empController = other.getEmpController();
        if (this$empController == null ? other$empController != null : !this$empController.equals(other$empController)) {
            return false;
        }
        DoctorController this$doctorController = this.getDoctorController();
        DoctorController other$doctorController = other.getDoctorController();
        if (this$doctorController == null ? other$doctorController != null : !this$doctorController.equals(other$doctorController)) {
            return false;
        }
        RecipelInfoInputController this$recipelInfoInputController = this.getRecipelInfoInputController();
        RecipelInfoInputController other$recipelInfoInputController = other.getRecipelInfoInputController();
        if (this$recipelInfoInputController == null ? other$recipelInfoInputController != null : !this$recipelInfoInputController.equals(other$recipelInfoInputController)) {
            return false;
        }
        GetRestOrderController this$getRestOrderController = this.getGetRestOrderController();
        GetRestOrderController other$getRestOrderController = other.getGetRestOrderController();
        if (this$getRestOrderController == null ? other$getRestOrderController != null : !this$getRestOrderController.equals(other$getRestOrderController)) {
            return false;
        }
        RecipelDrugsController this$recipelDrugsController = this.getRecipelDrugsController();
        RecipelDrugsController other$recipelDrugsController = other.getRecipelDrugsController();
        if (this$recipelDrugsController == null ? other$recipelDrugsController != null : !this$recipelDrugsController.equals(other$recipelDrugsController)) {
            return false;
        }
        SpecialDrugsController this$specialDrugsController = this.getSpecialDrugsController();
        SpecialDrugsController other$specialDrugsController = other.getSpecialDrugsController();
        if (this$specialDrugsController == null ? other$specialDrugsController != null : !this$specialDrugsController.equals(other$specialDrugsController)) {
            return false;
        }
        ServerController this$serverController = this.getServerController();
        ServerController other$serverController = other.getServerController();
        if (this$serverController == null ? other$serverController != null : !(this$serverController).equals(other$serverController)) {
            return false;
        }
        GiftController this$giftController = this.getGiftController();
        GiftController other$giftController = other.getGiftController();
        if (this$giftController == null ? other$giftController != null : !this$giftController.equals(other$giftController)) {
            return false;
        }
        CancelOneController this$cancelOneController = this.getCancelOneController();
        CancelOneController other$cancelOneController = other.getCancelOneController();
        if (this$cancelOneController == null ? other$cancelOneController != null : !this$cancelOneController.equals(other$cancelOneController)) {
            return false;
        }
        TieNumController this$tieNumController = this.getTieNumController();
        TieNumController other$tieNumController = other.getTieNumController();
        if (this$tieNumController == null ? other$tieNumController != null : !this$tieNumController.equals(other$tieNumController)) {
            return false;
        }
        SaleActSelectController this$saleActSelectController = this.getSaleActSelectController();
        SaleActSelectController other$saleActSelectController = other.getSaleActSelectController();
        if (this$saleActSelectController == null ? other$saleActSelectController != null : !this$saleActSelectController.equals(other$saleActSelectController)) {
            return false;
        }
        SingleChangePriceController this$singleChangePriceController = this.getSingleChangePriceController();
        SingleChangePriceController other$singleChangePriceController = other.getSingleChangePriceController();
        if (this$singleChangePriceController == null ? other$singleChangePriceController != null : !(this$singleChangePriceController).equals(other$singleChangePriceController)) {
            return false;
        }
        SingleChangeRateController this$singleChangeRateController = this.getSingleChangeRateController();
        SingleChangeRateController other$singleChangeRateController = other.getSingleChangeRateController();
        if (this$singleChangeRateController == null ? other$singleChangeRateController != null : !(this$singleChangeRateController).equals(other$singleChangeRateController)) {
            return false;
        }
        AllChangeRateController this$allChangeRateController = this.getAllChangeRateController();
        AllChangeRateController other$allChangeRateController = other.getAllChangeRateController();
        if (this$allChangeRateController == null ? other$allChangeRateController != null : !(this$allChangeRateController).equals(other$allChangeRateController)) {
            return false;
        }
        RestOrderController this$restOrderController = this.getRestOrderController();
        RestOrderController other$restOrderController = other.getRestOrderController();
        if (this$restOrderController == null ? other$restOrderController != null : !this$restOrderController.equals(other$restOrderController)) {
            return false;
        }
        ReplaceSaleController this$replaceSaleController = this.getReplaceSaleController();
        ReplaceSaleController other$replaceSaleController = other.getReplaceSaleController();
        if (this$replaceSaleController == null ? other$replaceSaleController != null : !this$replaceSaleController.equals(other$replaceSaleController)) {
            return false;
        }
        SelectRecipelDrugsController this$selectRecipelDrugsController = this.getSelectRecipelDrugsController();
        SelectRecipelDrugsController other$selectRecipelDrugsController = other.getSelectRecipelDrugsController();
        if (this$selectRecipelDrugsController == null ? other$selectRecipelDrugsController != null : !(this$selectRecipelDrugsController).equals(other$selectRecipelDrugsController)) {
            return false;
        }
        GiftCardController this$giftCardController = this.getGiftCardController();
        GiftCardController other$giftCardController = other.getGiftCardController();
        if (this$giftCardController == null ? other$giftCardController != null : !this$giftCardController.equals(other$giftCardController)) {
            return false;
        }
        PayController this$payController = this.getPayController();
        PayController other$payController = other.getPayController();
        if (this$payController == null ? other$payController != null : !(this$payController).equals(other$payController)) {
            return false;
        }
        SpliteProTipController this$spliteProTipController = this.getSpliteProTipController();
        SpliteProTipController other$spliteProTipController = other.getSpliteProTipController();
        if (this$spliteProTipController == null ? other$spliteProTipController != null : !this$spliteProTipController.equals(other$spliteProTipController)) {
            return false;
        }
        List<GetQueryProductOutData> this$queryProductOutData = this.getQueryProductOutData();
        List<GetQueryProductOutData> other$queryProductOutData = other.getQueryProductOutData();
        if (this$queryProductOutData == null ? other$queryProductOutData != null : !(this$queryProductOutData).equals(other$queryProductOutData)) {
            return false;
        }
        ObservableList<GetSalesReceiptsTableOutData> this$observableTableList = this.getObservableTableList();
        ObservableList<GetSalesReceiptsTableOutData> other$observableTableList = other.getObservableTableList();
        if (this$observableTableList == null ? other$observableTableList != null : !this$observableTableList.equals(other$observableTableList)) {
            return false;
        }
        ObservableList<GetPromByProCodeOutData> this$observableSamllTableList = this.getObservableSamllTableList();
        ObservableList<GetPromByProCodeOutData> other$observableSamllTableList = other.getObservableSamllTableList();
        if (this$observableSamllTableList == null ? other$observableSamllTableList != null : !this$observableSamllTableList.equals(other$observableSamllTableList)) {
            return false;
        }
        if (this.isSelectFlag() != other.isSelectFlag()) {
            return false;
        }
        GetQueryProductOutData this$product = this.getProduct();
        GetQueryProductOutData other$product = other.getProduct();
        if (this$product == null ? other$product != null : !(this$product).equals(other$product)) {
            return false;
        }
        if (this.isNumInFlag() != other.isNumInFlag()) {
            return false;
        }
        ChangeListener this$changeListener = this.getChangeListener();
        ChangeListener other$changeListener = other.getChangeListener();
        if (this$changeListener == null ? other$changeListener != null : !this$changeListener.equals(other$changeListener)) {
            return false;
        }
        List<GetSalesReceiptsTableOutData> this$specialDrugList = this.getSpecialDrugList();
        List<GetSalesReceiptsTableOutData> other$specialDrugList = other.getSpecialDrugList();
        if (this$specialDrugList == null ? other$specialDrugList != null : !(this$specialDrugList).equals(other$specialDrugList)) {
            return false;
        }
        List<GetSalesReceiptsTableOutData> this$recipelDrugList = this.getRecipelDrugList();
        List<GetSalesReceiptsTableOutData> other$recipelDrugList = other.getRecipelDrugList();
        if (this$recipelDrugList == null ? other$recipelDrugList != null : !(this$recipelDrugList).equals(other$recipelDrugList)) {
            return false;
        }
        Boolean this$createSaleFlag = this.getCreateSaleFlag();
        Boolean other$createSaleFlag = other.getCreateSaleFlag();
        if (this$createSaleFlag == null ? other$createSaleFlag != null : !(this$createSaleFlag).equals(other$createSaleFlag)) {
            return false;
        }
        String this$priceString = this.getPriceString();
        String other$priceString = other.getPriceString();
        if (this$priceString == null ? other$priceString != null : !this$priceString.equals(other$priceString)) {
            return false;
        }
        String this$lsPriceString = this.getLsPriceString();
        String other$lsPriceString = other.getLsPriceString();
        if (this$lsPriceString == null ? other$lsPriceString != null : !this$lsPriceString.equals(other$lsPriceString)) {
            return false;
        }
        String this$indexString = this.getIndexString();
        String other$indexString = other.getIndexString();
        if (this$indexString == null ? other$indexString != null : !this$indexString.equals(other$indexString)) {
            return false;
        }
        String this$proCodeString = this.getProCodeString();
        String other$proCodeString = other.getProCodeString();
        if (this$proCodeString == null ? other$proCodeString != null : !this$proCodeString.equals(other$proCodeString)) {
            return false;
        }
        String this$typeId = this.getTypeId();
        String other$typeId = other.getTypeId();
        if (this$typeId == null ? other$typeId != null : !this$typeId.equals(other$typeId)) {
            return false;
        }
        String this$deptId = this.getDeptId();
        String other$deptId = other.getDeptId();
        if (this$deptId == null ? other$deptId != null : !this$deptId.equals(other$deptId)) {
            return false;
        }
        String this$replaceUserId = this.getReplaceUserId();
        String other$replaceUserId = other.getReplaceUserId();
        if (this$replaceUserId == null ? other$replaceUserId != null : !this$replaceUserId.equals(other$replaceUserId)) {
            return false;
        }
        Boolean this$inputFlag = this.getInputFlag();
        Boolean other$inputFlag = other.getInputFlag();
        if (this$inputFlag == null ? other$inputFlag != null : !(this$inputFlag).equals(other$inputFlag)) {
            return false;
        }
        GaiaSdIntegralAddSet this$gaiaSdIntegralAddSet = this.getGaiaSdIntegralAddSet();
        GaiaSdIntegralAddSet other$gaiaSdIntegralAddSet = other.getGaiaSdIntegralAddSet();
        if (this$gaiaSdIntegralAddSet == null ? other$gaiaSdIntegralAddSet != null : !(this$gaiaSdIntegralAddSet).equals(other$gaiaSdIntegralAddSet)) {
            return false;
        }
        GaiaSdMemberClass this$gaiaSdMemberClass = this.getGaiaSdMemberClass();
        GaiaSdMemberClass other$gaiaSdMemberClass = other.getGaiaSdMemberClass();
        if (this$gaiaSdMemberClass == null ? other$gaiaSdMemberClass != null : !(this$gaiaSdMemberClass).equals(other$gaiaSdMemberClass)) {
            return false;
        }
        Pane this$memberPane = this.getMemberPane();
        Pane other$memberPane = other.getMemberPane();
        if (this$memberPane == null ? other$memberPane != null : !this$memberPane.equals(other$memberPane)) {
            return false;
        }
        GridPane this$memberG1 = this.getMemberG1();
        GridPane other$memberG1 = other.getMemberG1();
        if (this$memberG1 == null ? other$memberG1 != null : !this$memberG1.equals(other$memberG1)) {
            return false;
        }
        GridPane this$memberG2 = this.getMemberG2();
        GridPane other$memberG2 = other.getMemberG2();
        if (this$memberG2 == null ? other$memberG2 != null : !this$memberG2.equals(other$memberG2)) {
            return false;
        }
        GridPane this$proF1Grid = this.getProF1Grid();
        GridPane other$proF1Grid = other.getProF1Grid();
        if (this$proF1Grid == null ? other$proF1Grid != null : !this$proF1Grid.equals(other$proF1Grid)) {
            return false;
        }
        GridPane this$proF2Grid = this.getProF2Grid();
        GridPane other$proF2Grid = other.getProF2Grid();
        if (this$proF2Grid == null ? other$proF2Grid != null : !this$proF2Grid.equals(other$proF2Grid)) {
            return false;
        }
        GridPane this$useGrid1 = this.getUseGrid1();
        GridPane other$useGrid1 = other.getUseGrid1();
        if (this$useGrid1 == null ? other$useGrid1 != null : !this$useGrid1.equals(other$useGrid1)) {
            return false;
        }
        GridPane this$useGrid2 = this.getUseGrid2();
        GridPane other$useGrid2 = other.getUseGrid2();
        if (this$useGrid2 == null ? other$useGrid2 != null : !this$useGrid2.equals(other$useGrid2)) {
            return false;
        }
        Label this$caseIdLabel = this.getCaseIdLabel();
        Label other$caseIdLabel = other.getCaseIdLabel();
        if (this$caseIdLabel == null ? other$caseIdLabel != null : !this$caseIdLabel.equals(other$caseIdLabel)) {
            return false;
        }
        Label this$workUserIdLabel = this.getWorkUserIdLabel();
        Label other$workUserIdLabel = other.getWorkUserIdLabel();
        if (this$workUserIdLabel == null ? other$workUserIdLabel != null : !this$workUserIdLabel.equals(other$workUserIdLabel)) {
            return false;
        }
        Label this$saleLabel = this.getSaleLabel();
        Label other$saleLabel = other.getSaleLabel();
        if (this$saleLabel == null ? other$saleLabel != null : !this$saleLabel.equals(other$saleLabel)) {
            return false;
        }
        Label this$numLabel = this.getNumLabel();
        Label other$numLabel = other.getNumLabel();
        if (this$numLabel == null ? other$numLabel != null : !this$numLabel.equals(other$numLabel)) {
            return false;
        }
        Label this$inputLabel = this.getInputLabel();
        Label other$inputLabel = other.getInputLabel();
        if (this$inputLabel == null ? other$inputLabel != null : !this$inputLabel.equals(other$inputLabel)) {
            return false;
        }
        Pane this$moneyTotalPane = this.getMoneyTotalPane();
        Pane other$moneyTotalPane = other.getMoneyTotalPane();
        if (this$moneyTotalPane == null ? other$moneyTotalPane != null : !this$moneyTotalPane.equals(other$moneyTotalPane)) {
            return false;
        }
        Pane this$proPane = this.getProPane();
        Pane other$proPane = other.getProPane();
        if (this$proPane == null ? other$proPane != null : !this$proPane.equals(other$proPane)) {
            return false;
        }
        Pane this$quickKeyPane = this.getQuickKeyPane();
        Pane other$quickKeyPane = other.getQuickKeyPane();
        if (this$quickKeyPane == null ? other$quickKeyPane != null : !this$quickKeyPane.equals(other$quickKeyPane)) {
            return false;
        }
        ImageView this$imageView = this.getImageView();
        ImageView other$imageView = other.getImageView();
        if (this$imageView == null ? other$imageView != null : !this$imageView.equals(other$imageView)) {
            return false;
        }
        Button this$quickBut1 = this.getQuickBut1();
        Button other$quickBut1 = other.getQuickBut1();
        if (this$quickBut1 == null ? other$quickBut1 != null : !this$quickBut1.equals(other$quickBut1)) {
            return false;
        }
        Button this$quickBut2 = this.getQuickBut2();
        Button other$quickBut2 = other.getQuickBut2();
        if (this$quickBut2 == null ? other$quickBut2 != null : !this$quickBut2.equals(other$quickBut2)) {
            return false;
        }
        Pane this$model1 = this.getModel1();
        Pane other$model1 = other.getModel1();
        if (this$model1 == null ? other$model1 != null : !this$model1.equals(other$model1)) {
            return false;
        }
        Pane this$model2 = this.getModel2();
        Pane other$model2 = other.getModel2();
        if (this$model2 == null ? other$model2 != null : !this$model2.equals(other$model2)) {
            return false;
        }
        VBox this$vbox = this.getVbox();
        VBox other$vbox = other.getVbox();
        if (this$vbox == null ? other$vbox != null : !this$vbox.equals(other$vbox)) {
            return false;
        }
        Pane this$inputModel = this.getInputModel();
        Pane other$inputModel = other.getInputModel();
        if (this$inputModel == null ? other$inputModel != null : !this$inputModel.equals(other$inputModel)) {
            return false;
        }
        Pane this$pane = this.getPane();
        Pane other$pane = other.getPane();
        if (this$pane == null ? other$pane != null : !this$pane.equals(other$pane)) {
            return false;
        }
        OfflineController this$offlineController = this.getOfflineController();
        OfflineController other$offlineController = other.getOfflineController();
        if (this$offlineController == null ? other$offlineController != null : !this$offlineController.equals(other$offlineController)) {
            return false;
        }
        CancelSaleController this$cancelSaleController = this.getCancelSaleController();
        CancelSaleController other$cancelSaleController = other.getCancelSaleController();
        return !(this$cancelSaleController == null ? other$cancelSaleController != null : !this$cancelSaleController.equals(other$cancelSaleController));
    }

    protected boolean canEqual(Object other) {
        return other instanceof SalesReceiptsMainController;
    }

    public int hashCode() {
        int PRIME = 59;
        int result = 1;
        ScrollPane $scrollPane = this.getScrollPane();
        result = result * 59 + ($scrollPane == null ? 43 : $scrollPane.hashCode());
        TableView<GetSalesReceiptsTableOutData> $tableView = this.getTableView();
        result = result * 59 + ($tableView == null ? 43 : $tableView.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $proCode = this.getProCode();
        result = result * 59 + ($proCode == null ? 43 : $proCode.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $num = this.getNum();
        result = result * 59 + ($num == null ? 43 : $num.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $index = this.getIndex();
        result = result * 59 + ($index == null ? 43 : $index.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $total = this.getTotal();
        result = result * 59 + ($total == null ? 43 : $total.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $price = this.getPrice();
        result = result * 59 + ($price == null ? 43 : $price.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $proUnit = this.getProUnit();
        result = result * 59 + ($proUnit == null ? 43 : $proUnit.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $prcAmount = this.getPrcAmount();
        result = result * 59 + ($prcAmount == null ? 43 : $prcAmount.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $disc = this.getDisc();
        result = result * 59 + ($disc == null ? 43 : $disc.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $proName = this.getProName();
        result = result * 59 + ($proName == null ? 43 : $proName.hashCode());
        TableColumn<GetSalesReceiptsTableOutData, String> $status = this.getStatus();
        result = result * 59 + ($status == null ? 43 : $status.hashCode());
        Label $caseId = this.getCaseId();
        result = result * 59 + ($caseId == null ? 43 : $caseId.hashCode());
        Label $workUserId = this.getWorkUserId();
        result = result * 59 + ($workUserId == null ? 43 : $workUserId.hashCode());
        Label $totalMoney = this.getTotalMoney();
        result = result * 59 + ($totalMoney == null ? 43 : $totalMoney.hashCode());
        Label $date = this.getDate();
        result = result * 59 + ($date == null ? 43 : $date.hashCode());
        Label $shopName = this.getShopName();
        result = result * 59 + ($shopName == null ? 43 : $shopName.hashCode());
        Label $time = this.getTime();
        result = result * 59 + ($time == null ? 43 : $time.hashCode());
        Pane $modelPane = this.getModelPane();
        result = result * 59 + ($modelPane == null ? 43 : $modelPane.hashCode());
        Pane $keytoolPane = this.getKeytoolPane();
        result = result * 59 + ($keytoolPane == null ? 43 : $keytoolPane.hashCode());
        Pane $fastPane = this.getFastPane();
        result = result * 59 + ($fastPane == null ? 43 : $fastPane.hashCode());
        Label $cardNum = this.getCardNum();
        result = result * 59 + ($cardNum == null ? 43 : $cardNum.hashCode());
        Label $phone = this.getPhone();
        result = result * 59 + ($phone == null ? 43 : $phone.hashCode());
        Label $name = this.getName();
        result = result * 59 + ($name == null ? 43 : $name.hashCode());
        Label $type = this.getType();
        result = result * 59 + ($type == null ? 43 : $type.hashCode());
        Label $point = this.getPoint();
        result = result * 59 + ($point == null ? 43 : $point.hashCode());
        Label $dis = this.getDis();
        result = result * 59 + ($dis == null ? 43 : $dis.hashCode());
        TextField $numTextField = this.getNumTextField();
        result = result * 59 + ($numTextField == null ? 43 : $numTextField.hashCode());
        TextField $inputTextField = this.getInputTextField();
        result = result * 59 + ($inputTextField == null ? 43 : $inputTextField.hashCode());
        Label $proPlaceF = this.getProPlaceF();
        result = result * 59 + ($proPlaceF == null ? 43 : $proPlaceF.hashCode());
        Label $gssbBatchNoF = this.getGssbBatchNoF();
        result = result * 59 + ($gssbBatchNoF == null ? 43 : $gssbBatchNoF.hashCode());
        Label $gssbVaildDateF = this.getGssbVaildDateF();
        result = result * 59 + ($gssbVaildDateF == null ? 43 : $gssbVaildDateF.hashCode());
        Label $gssbQtyF = this.getGssbQtyF();
        result = result * 59 + ($gssbQtyF == null ? 43 : $gssbQtyF.hashCode());
        Label $proSpecsF = this.getProSpecsF();
        result = result * 59 + ($proSpecsF == null ? 43 : $proSpecsF.hashCode());
        Label $gsplSeatF = this.getGsplSeatF();
        result = result * 59 + ($gsplSeatF == null ? 43 : $gsplSeatF.hashCode());
        Label $proIfPartF = this.getProIfPartF();
        result = result * 59 + ($proIfPartF == null ? 43 : $proIfPartF.hashCode());
        Label $proMedProdctF = this.getProMedProdctF();
        result = result * 59 + ($proMedProdctF == null ? 43 : $proMedProdctF.hashCode());
        Label $empF = this.getEmpF();
        result = result * 59 + ($empF == null ? 43 : $empF.hashCode());
        Label $doctorF = this.getDoctorF();
        result = result * 59 + ($doctorF == null ? 43 : $doctorF.hashCode());
        Label $proUsage = this.getProUsage();
        result = result * 59 + ($proUsage == null ? 43 : $proUsage.hashCode());
        Label $proContraindication = this.getProContraindication();
        result = result * 59 + ($proContraindication == null ? 43 : $proContraindication.hashCode());
        TableColumn<GetPromByProCodeOutData, String> $promotionName = this.getPromotionName();
        result = result * 59 + ($promotionName == null ? 43 : $promotionName.hashCode());
        TableColumn<GetPromByProCodeOutData, String> $promotionType = this.getPromotionType();
        result = result * 59 + ($promotionType == null ? 43 : $promotionType.hashCode());
        TableColumn<GetPromByProCodeOutData, String> $promotionContent = this.getPromotionContent();
        result = result * 59 + ($promotionContent == null ? 43 : $promotionContent.hashCode());
        TableColumn<GetPromByProCodeOutData, String> $button = this.getButton();
        result = result * 59 + ($button == null ? 43 : $button.hashCode());
        TableView<GetPromByProCodeOutData> $smallTableView = this.getSmallTableView();
        result = result * 59 + ($smallTableView == null ? 43 : $smallTableView.hashCode());
        Text $zysy = this.getZysy();
        result = result * 59 + ($zysy == null ? 43 : $zysy.hashCode());
        IndexController $indexController = this.getIndexController();
        result = result * 59 + ($indexController == null ? 43 : ($indexController).hashCode());
        QueryMemberController $queryMemberController = this.getQueryMemberController();
        result = result * 59 + ($queryMemberController == null ? 43 : $queryMemberController.hashCode());
        ZysyController $zysyController = this.getZysyController();
        result = result * 59 + ($zysyController == null ? 43 : $zysyController.hashCode());
        ZysyLogOutController $zysyLogOutController = this.getZysyLogOutController();
        result = result * 59 + ($zysyLogOutController == null ? 43 : $zysyLogOutController.hashCode());
        SpliteProController $spliteProController = this.getSpliteProController();
        result = result * 59 + ($spliteProController == null ? 43 : ($spliteProController).hashCode());
        ChangeDutyController $changeDutyController = this.getChangeDutyController();
        result = result * 59 + ($changeDutyController == null ? 43 : $changeDutyController.hashCode());
        ChangeDutyTipController $changeDutyTipController = this.getChangeDutyTipController();
        result = result * 59 + ($changeDutyTipController == null ? 43 : $changeDutyTipController.hashCode());
        RePrintBillController $rePrintBillController = this.getRePrintBillController();
        result = result * 59 + ($rePrintBillController == null ? 43 : $rePrintBillController.hashCode());
        KeyTipController $keyTipController = this.getKeyTipController();
        result = result * 59 + ($keyTipController == null ? 43 : ($keyTipController).hashCode());
        ProductQueryController $productQueryController = this.getProductQueryController();
        result = result * 59 + ($productQueryController == null ? 43 : ($productQueryController).hashCode());
        CashierDutyController $cashierDutyController = this.getCashierDutyController();
        result = result * 59 + ($cashierDutyController == null ? 43 : $cashierDutyController.hashCode());
        PdAndExpController $pdAndExpController = this.getPdAndExpController();
        result = result * 59 + ($pdAndExpController == null ? 43 : ($pdAndExpController).hashCode());
        EmpController $empController = this.getEmpController();
        result = result * 59 + ($empController == null ? 43 : $empController.hashCode());
        DoctorController $doctorController = this.getDoctorController();
        result = result * 59 + ($doctorController == null ? 43 : $doctorController.hashCode());
        RecipelInfoInputController $recipelInfoInputController = this.getRecipelInfoInputController();
        result = result * 59 + ($recipelInfoInputController == null ? 43 : $recipelInfoInputController.hashCode());
        GetRestOrderController $getRestOrderController = this.getGetRestOrderController();
        result = result * 59 + ($getRestOrderController == null ? 43 : $getRestOrderController.hashCode());
        RecipelDrugsController $recipelDrugsController = this.getRecipelDrugsController();
        result = result * 59 + ($recipelDrugsController == null ? 43 : $recipelDrugsController.hashCode());
        SpecialDrugsController $specialDrugsController = this.getSpecialDrugsController();
        result = result * 59 + ($specialDrugsController == null ? 43 : $specialDrugsController.hashCode());
        ServerController $serverController = this.getServerController();
        result = result * 59 + ($serverController == null ? 43 : ($serverController).hashCode());
        GiftController $giftController = this.getGiftController();
        result = result * 59 + ($giftController == null ? 43 : $giftController.hashCode());
        CancelOneController $cancelOneController = this.getCancelOneController();
        result = result * 59 + ($cancelOneController == null ? 43 : $cancelOneController.hashCode());
        TieNumController $tieNumController = this.getTieNumController();
        result = result * 59 + ($tieNumController == null ? 43 : $tieNumController.hashCode());
        SaleActSelectController $saleActSelectController = this.getSaleActSelectController();
        result = result * 59 + ($saleActSelectController == null ? 43 : $saleActSelectController.hashCode());
        SingleChangePriceController $singleChangePriceController = this.getSingleChangePriceController();
        result = result * 59 + ($singleChangePriceController == null ? 43 : ($singleChangePriceController).hashCode());
        SingleChangeRateController $singleChangeRateController = this.getSingleChangeRateController();
        result = result * 59 + ($singleChangeRateController == null ? 43 : ($singleChangeRateController).hashCode());
        AllChangeRateController $allChangeRateController = this.getAllChangeRateController();
        result = result * 59 + ($allChangeRateController == null ? 43 : ($allChangeRateController).hashCode());
        RestOrderController $restOrderController = this.getRestOrderController();
        result = result * 59 + ($restOrderController == null ? 43 : $restOrderController.hashCode());
        ReplaceSaleController $replaceSaleController = this.getReplaceSaleController();
        result = result * 59 + ($replaceSaleController == null ? 43 : $replaceSaleController.hashCode());
        SelectRecipelDrugsController $selectRecipelDrugsController = this.getSelectRecipelDrugsController();
        result = result * 59 + ($selectRecipelDrugsController == null ? 43 : ($selectRecipelDrugsController).hashCode());
        GiftCardController $giftCardController = this.getGiftCardController();
        result = result * 59 + ($giftCardController == null ? 43 : $giftCardController.hashCode());
        PayController $payController = this.getPayController();
        result = result * 59 + ($payController == null ? 43 : ($payController).hashCode());
        SpliteProTipController $spliteProTipController = this.getSpliteProTipController();
        result = result * 59 + ($spliteProTipController == null ? 43 : $spliteProTipController.hashCode());
        List<GetQueryProductOutData> $queryProductOutData = this.getQueryProductOutData();
        result = result * 59 + ($queryProductOutData == null ? 43 : ($queryProductOutData).hashCode());
        ObservableList<GetSalesReceiptsTableOutData> $observableTableList = this.getObservableTableList();
        result = result * 59 + ($observableTableList == null ? 43 : $observableTableList.hashCode());
        ObservableList<GetPromByProCodeOutData> $observableSamllTableList = this.getObservableSamllTableList();
        result = result * 59 + ($observableSamllTableList == null ? 43 : $observableSamllTableList.hashCode());
        result = result * 59 + (this.isSelectFlag() ? 79 : 97);
        GetQueryProductOutData $product = this.getProduct();
        result = result * 59 + ($product == null ? 43 : ($product).hashCode());
        result = result * 59 + (this.isNumInFlag() ? 79 : 97);
        ChangeListener $changeListener = this.getChangeListener();
        result = result * 59 + ($changeListener == null ? 43 : $changeListener.hashCode());
        List<GetSalesReceiptsTableOutData> $specialDrugList = this.getSpecialDrugList();
        result = result * 59 + ($specialDrugList == null ? 43 : ($specialDrugList).hashCode());
        List<GetSalesReceiptsTableOutData> $recipelDrugList = this.getRecipelDrugList();
        result = result * 59 + ($recipelDrugList == null ? 43 : ($recipelDrugList).hashCode());
        Boolean $createSaleFlag = this.getCreateSaleFlag();
        result = result * 59 + ($createSaleFlag == null ? 43 : ($createSaleFlag).hashCode());
        String $priceString = this.getPriceString();
        result = result * 59 + ($priceString == null ? 43 : $priceString.hashCode());
        String $lsPriceString = this.getLsPriceString();
        result = result * 59 + ($lsPriceString == null ? 43 : $lsPriceString.hashCode());
        String $indexString = this.getIndexString();
        result = result * 59 + ($indexString == null ? 43 : $indexString.hashCode());
        String $proCodeString = this.getProCodeString();
        result = result * 59 + ($proCodeString == null ? 43 : $proCodeString.hashCode());
        String $typeId = this.getTypeId();
        result = result * 59 + ($typeId == null ? 43 : $typeId.hashCode());
        String $deptId = this.getDeptId();
        result = result * 59 + ($deptId == null ? 43 : $deptId.hashCode());
        String $replaceUserId = this.getReplaceUserId();
        result = result * 59 + ($replaceUserId == null ? 43 : $replaceUserId.hashCode());
        Boolean $inputFlag = this.getInputFlag();
        result = result * 59 + ($inputFlag == null ? 43 : ($inputFlag).hashCode());
        GaiaSdIntegralAddSet $gaiaSdIntegralAddSet = this.getGaiaSdIntegralAddSet();
        result = result * 59 + ($gaiaSdIntegralAddSet == null ? 43 : ($gaiaSdIntegralAddSet).hashCode());
        GaiaSdMemberClass $gaiaSdMemberClass = this.getGaiaSdMemberClass();
        result = result * 59 + ($gaiaSdMemberClass == null ? 43 : ($gaiaSdMemberClass).hashCode());
        Pane $memberPane = this.getMemberPane();
        result = result * 59 + ($memberPane == null ? 43 : $memberPane.hashCode());
        GridPane $memberG1 = this.getMemberG1();
        result = result * 59 + ($memberG1 == null ? 43 : $memberG1.hashCode());
        GridPane $memberG2 = this.getMemberG2();
        result = result * 59 + ($memberG2 == null ? 43 : $memberG2.hashCode());
        GridPane $proF1Grid = this.getProF1Grid();
        result = result * 59 + ($proF1Grid == null ? 43 : $proF1Grid.hashCode());
        GridPane $proF2Grid = this.getProF2Grid();
        result = result * 59 + ($proF2Grid == null ? 43 : $proF2Grid.hashCode());
        GridPane $useGrid1 = this.getUseGrid1();
        result = result * 59 + ($useGrid1 == null ? 43 : $useGrid1.hashCode());
        GridPane $useGrid2 = this.getUseGrid2();
        result = result * 59 + ($useGrid2 == null ? 43 : $useGrid2.hashCode());
        Label $caseIdLabel = this.getCaseIdLabel();
        result = result * 59 + ($caseIdLabel == null ? 43 : $caseIdLabel.hashCode());
        Label $workUserIdLabel = this.getWorkUserIdLabel();
        result = result * 59 + ($workUserIdLabel == null ? 43 : $workUserIdLabel.hashCode());
        Label $saleLabel = this.getSaleLabel();
        result = result * 59 + ($saleLabel == null ? 43 : $saleLabel.hashCode());
        Label $numLabel = this.getNumLabel();
        result = result * 59 + ($numLabel == null ? 43 : $numLabel.hashCode());
        Label $inputLabel = this.getInputLabel();
        result = result * 59 + ($inputLabel == null ? 43 : $inputLabel.hashCode());
        Pane $moneyTotalPane = this.getMoneyTotalPane();
        result = result * 59 + ($moneyTotalPane == null ? 43 : $moneyTotalPane.hashCode());
        Pane $proPane = this.getProPane();
        result = result * 59 + ($proPane == null ? 43 : $proPane.hashCode());
        Pane $quickKeyPane = this.getQuickKeyPane();
        result = result * 59 + ($quickKeyPane == null ? 43 : $quickKeyPane.hashCode());
        ImageView $imageView = this.getImageView();
        result = result * 59 + ($imageView == null ? 43 : $imageView.hashCode());
        Button $quickBut1 = this.getQuickBut1();
        result = result * 59 + ($quickBut1 == null ? 43 : $quickBut1.hashCode());
        Button $quickBut2 = this.getQuickBut2();
        result = result * 59 + ($quickBut2 == null ? 43 : $quickBut2.hashCode());
        Pane $model1 = this.getModel1();
        result = result * 59 + ($model1 == null ? 43 : $model1.hashCode());
        Pane $model2 = this.getModel2();
        result = result * 59 + ($model2 == null ? 43 : $model2.hashCode());
        VBox $vbox = this.getVbox();
        result = result * 59 + ($vbox == null ? 43 : $vbox.hashCode());
        Pane $inputModel = this.getInputModel();
        result = result * 59 + ($inputModel == null ? 43 : $inputModel.hashCode());
        Pane $pane = this.getPane();
        result = result * 59 + ($pane == null ? 43 : $pane.hashCode());
        OfflineController $offlineController = this.getOfflineController();
        result = result * 59 + ($offlineController == null ? 43 : $offlineController.hashCode());
        CancelSaleController $cancelSaleController = this.getCancelSaleController();
        result = result * 59 + ($cancelSaleController == null ? 43 : $cancelSaleController.hashCode());
        return result;
    }

    public String toString() {
        return "SalesReceiptsMainController(scrollPane=" + this.getScrollPane() + ", tableView=" + this.getTableView() + ", proCode=" + this.getProCode() + ", num=" + this.getNum() + ", index=" + this.getIndex() + ", total=" + this.getTotal() + ", price=" + this.getPrice() + ", proUnit=" + this.getProUnit() + ", prcAmount=" + this.getPrcAmount() + ", disc=" + this.getDisc() + ", proName=" + this.getProName() + ", status=" + this.getStatus() + ", caseId=" + this.getCaseId() + ", workUserId=" + this.getWorkUserId() + ", totalMoney=" + this.getTotalMoney() + ", date=" + this.getDate() + ", shopName=" + this.getShopName() + ", time=" + this.getTime() + ", modelPane=" + this.getModelPane() + ", keytoolPane=" + this.getKeytoolPane() + ", fastPane=" + this.getFastPane() + ", cardNum=" + this.getCardNum() + ", phone=" + this.getPhone() + ", name=" + this.getName() + ", type=" + this.getType() + ", point=" + this.getPoint() + ", dis=" + this.getDis() + ", numTextField=" + this.getNumTextField() + ", inputTextField=" + this.getInputTextField() + ", proPlaceF=" + this.getProPlaceF() + ", gssbBatchNoF=" + this.getGssbBatchNoF() + ", gssbVaildDateF=" + this.getGssbVaildDateF() + ", gssbQtyF=" + this.getGssbQtyF() + ", proSpecsF=" + this.getProSpecsF() + ", gsplSeatF=" + this.getGsplSeatF() + ", proIfPartF=" + this.getProIfPartF() + ", proMedProdctF=" + this.getProMedProdctF() + ", empF=" + this.getEmpF() + ", doctorF=" + this.getDoctorF() + ", proUsage=" + this.getProUsage() + ", proContraindication=" + this.getProContraindication() + ", promotionName=" + this.getPromotionName() + ", promotionType=" + this.getPromotionType() + ", promotionContent=" + this.getPromotionContent() + ", button=" + this.getButton() + ", smallTableView=" + this.getSmallTableView() + ", zysy=" + this.getZysy() + ", indexController=" + this.getIndexController() + ", queryMemberController=" + this.getQueryMemberController() + ", zysyController=" + this.getZysyController() + ", zysyLogOutController=" + this.getZysyLogOutController() + ", spliteProController=" + this.getSpliteProController() + ", changeDutyController=" + this.getChangeDutyController() + ", changeDutyTipController=" + this.getChangeDutyTipController() + ", rePrintBillController=" + this.getRePrintBillController() + ", keyTipController=" + this.getKeyTipController() + ", productQueryController=" + this.getProductQueryController() + ", cashierDutyController=" + this.getCashierDutyController() + ", pdAndExpController=" + this.getPdAndExpController() + ", empController=" + this.getEmpController() + ", doctorController=" + this.getDoctorController() + ", recipelInfoInputController=" + this.getRecipelInfoInputController() + ", getRestOrderController=" + this.getGetRestOrderController() + ", recipelDrugsController=" + this.getRecipelDrugsController() + ", specialDrugsController=" + this.getSpecialDrugsController() + ", serverController=" + this.getServerController() + ", giftController=" + this.getGiftController() + ", cancelOneController=" + this.getCancelOneController() + ", tieNumController=" + this.getTieNumController() + ", saleActSelectController=" + this.getSaleActSelectController() + ", singleChangePriceController=" + this.getSingleChangePriceController() + ", singleChangeRateController=" + this.getSingleChangeRateController() + ", allChangeRateController=" + this.getAllChangeRateController() + ", restOrderController=" + this.getRestOrderController() + ", replaceSaleController=" + this.getReplaceSaleController() + ", selectRecipelDrugsController=" + this.getSelectRecipelDrugsController() + ", giftCardController=" + this.getGiftCardController() + ", payController=" + this.getPayController() + ", spliteProTipController=" + this.getSpliteProTipController() + ", queryProductOutData=" + this.getQueryProductOutData() + ", observableTableList=" + this.getObservableTableList() + ", observableSamllTableList=" + this.getObservableSamllTableList() + ", selectFlag=" + this.isSelectFlag() + ", product=" + this.getProduct() + ", numInFlag=" + this.isNumInFlag() + ", changeListener=" + this.getChangeListener() + ", specialDrugList=" + this.getSpecialDrugList() + ", recipelDrugList=" + this.getRecipelDrugList() + ", createSaleFlag=" + this.getCreateSaleFlag() + ", priceString=" + this.getPriceString() + ", lsPriceString=" + this.getLsPriceString() + ", indexString=" + this.getIndexString() + ", proCodeString=" + this.getProCodeString() + ", typeId=" + this.getTypeId() + ", deptId=" + this.getDeptId() + ", replaceUserId=" + this.getReplaceUserId() + ", inputFlag=" + this.getInputFlag() + ", gaiaSdIntegralAddSet=" + this.getGaiaSdIntegralAddSet() + ", gaiaSdMemberClass=" + this.getGaiaSdMemberClass() + ", memberPane=" + this.getMemberPane() + ", memberG1=" + this.getMemberG1() + ", memberG2=" + this.getMemberG2() + ", proF1Grid=" + this.getProF1Grid() + ", proF2Grid=" + this.getProF2Grid() + ", useGrid1=" + this.getUseGrid1() + ", useGrid2=" + this.getUseGrid2() + ", caseIdLabel=" + this.getCaseIdLabel() + ", workUserIdLabel=" + this.getWorkUserIdLabel() + ", saleLabel=" + this.getSaleLabel() + ", numLabel=" + this.getNumLabel() + ", inputLabel=" + this.getInputLabel() + ", moneyTotalPane=" + this.getMoneyTotalPane() + ", proPane=" + this.getProPane() + ", quickKeyPane=" + this.getQuickKeyPane() + ", imageView=" + this.getImageView() + ", quickBut1=" + this.getQuickBut1() + ", quickBut2=" + this.getQuickBut2() + ", model1=" + this.getModel1() + ", model2=" + this.getModel2() + ", vbox=" + this.getVbox() + ", inputModel=" + this.getInputModel() + ", pane=" + this.getPane() + ", offlineController=" + this.getOfflineController() + ", cancelSaleController=" + this.getCancelSaleController() + ")";
    }
}

